"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > Monograms هي متراصة في فئة functors ...

Monograms هي متراصة في فئة functors ...

نشر في 2025-04-13
تصفح:747

A monad is a monoid in the category of endofunctors...

ما هو موناد؟

موناد هو monoid في فئة endofunctors ...؟

... لنحاول مرة أخرى:

الموناد هو تجريد يستخدم في البرمجة الوظيفية للتعامل مع الحسابات بطريقة متسقة. إنه نمط تصميم يسمح بسلسلة العمليات مع تغليف الآثار الجانبية ، مثل تغييرات الحالة ، I/O ، أو الأخطاء ، بطريقة يتم التحكم فيها.

يمكن التفكير في الموناد كوسيلة لالتفاف القيم وتطبيق الوظائف عليها ، مما يضمن إجراء الحسابات في بيئة يمكن التنبؤ بها والتحكم فيها.

فهمي الشخصي هو: الموناد هي بنية بيانات مع

  • قيمة واحدة غير قابلة للتغيير (أو وظيفة)
  • وظيفة خريطة/ربط لرسم خريطة وظيفة لتلك القيمة
  • وظيفة عودة/مسطحة تعيد الحالة الجديدة إلى موناد جديد في كل مرة

هذا يتيح التسلسل وتكوين العمليات بطريقة تحافظ على عدم القدرة على التثبت والنقاء الوظيفي-نهج "عكسي" في الفصل ، حيث لا يمكن تعديل الحالة في مكانها ، ولكن يتم تطبيق التحولات وظيفيًا لإنتاج مثيلات جديدة.

هذا "التماثل العكسي" يسلط الضوء على التباين:

  • تعدل الفصول حالتها الداخلية ، والحفاظ على قابلية التكيف والتفاعل المباشر من خلال الطرق الداخلية. يتفاعلون معظم الوقت مع حالة عالمية

  • تصل monads إلى نتائج مماثلة إلى فئة ، ولكن من خلال لف القيم ورسم خرائط التحولات الخارجية غير القابلة للتغيير ، ليس لديهم آثار جانبية: لا توجد حالة عالمية

مثال:

  • فصل: تحتوي فئة الصندوق على قيمة ، ويمكنك تعديل القيمة عن طريق استدعاء أساليب مثل SetValue (NewValue) ، والتي تحول الحالة الداخلية للمربع.
  • موناد: سوف يحتفظ BoxMonad بقيمة بطريقة غير قابلة للتغيير. لتحويل القيمة ، يمكنك استخدام وظيفة مثل الخريطة ، والتي تطبق وظيفة خارجية على القيمة وإرجاع boxmonad جديد ، مع القيمة الجديدة.

مثال مشروع في بيثون:
https://github.com/blackopsrepl/py-monad-task-manager Budaper

في هذا التطبيق ، نستخدم موناد الدولة لإدارة حالة قائمة المهام. توفر Monad الدولة وسيلة لنمذجة عملية إدارة المهام كسلسلة من التحولات على حالة التطبيق ، مع الحفاظ على الدولة نفسها غير قابلة للتغيير.

بدلاً من تعديل حالة قائمة المهام مباشرة ، نستخدم وظيفة Return_ لالتفاف الحالة الأولية في حاوية أحادية ، ووظيفة الربط لتطبيق التحولات على الحالة بطريقة يمكن التنبؤ بها. في كل مرة يتم فيها إجراء عملية (مثل إضافة المهام أو تحريرها أو حذفها) ، فإنها تُرجع مثيلًا جديدًا للدولة ، وضمان عدم التكلفة والتكامل.

وظائف المفاتيح:

    return_: قم بلف قيمة في حاوية أحادية ، مما يجعلها جزءًا من سلسلة الحساب الأحادي.
  • ربط: يطبق وظيفة على القيمة داخل الموناد ، وإعادة حاوية أحادية جديدة مع القيمة المحولة.
باستخدام موناد الحالة ، يمكننا التعامل مع عمليات إدارة المهام بطريقة تضمن تحديث الحالة بشكل ثابت وتتكون الحسابات بدون آثار جانبية أو تفاعلات غير مرغوب فيها بين العمليات.

بيان الافراج تتم إعادة طباعة هذه المقالة على: https://dev.to/blacopsrepl/a-monad-is-a-monoid-in-the-category-of-endofunctors-47oi؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3