التفكير بأسلوب رمدة: خاتمة

1. الخطوات الأولى
2. الجمع بين الوظائف
3. الاستخدام الجزئي (الكاري)
4. برمجة تعريفية
5. تدوين أساسي
6. الثبات والأشياء
7. الثبات والمصفوفات
8. العدسات
9. الخلاصة


يكمل هذا المنشور سلسلة من المقالات حول البرمجة الوظيفية تسمى Ramda Style Thinking.


في المنشورات الثمانية الأخيرة ، تحدثنا عن مكتبة Ramda JavaScript ، التي توفر وظائف للعمل مع JavaScript بأسلوب وظيفي وإعلاني وثابت.


خلال سلسلة المقالات هذه ، علمنا أن Ramda لديها بعض المبادئ الأساسية التي يتبعها API:


  • تأتي البيانات أخيرًا: تقبل جميع الوظائف تقريبًا معلمة مع البيانات كوسيطة أخيرة.
  • الكاري: كل وظيفة تقريبًا في الرمدة تتغذى. أي أنه يمكنك استدعاء دالة بجزء فقط من الوسيطات المطلوبة ، والحصول على وظيفة جديدة تنتظر الوسيطات المتبقية. بمجرد تقديم جميع الوسيطات ، سيتم استدعاء الوظيفة الأصلية.

يسمح لنا هذان المبدأان بكتابة كود وظيفي نظيف للغاية يدمج لبنات البناء الأساسية في عمليات أكثر قوة.


الملخص


كمرجع ، فيما يلي ملخص قصير لسلسلة من المقالات.


  • يتم تقديم الخطوات الأولى لنا بفكرة الوظائف والوظائف البحتة والثبات. ثم تقوم بتعريفنا بجمع وظائف التكرار ، مثل map filter reduce .
  • يوضح لنا الجمع بين الوظائف كيف يمكننا الجمع بين وظائفنا بطرق مختلفة ، باستخدام أدوات مثل both pipe compose .
  • يساعدنا الاستخدام الجزئي (الكاري) في فهم متى وكيف يكون من المفيد تقديم بعض الحجج للدالة وأن نكون قادرين على توفير الباقي لاحقًا. نستخدم partial curry لمساعدتنا في ذلك والتعرف على flip النائب ( __ )
  • تعلمنا البرمجة التصريفية الفرق بين البرمجة الحتمية والتعليمية. سوف نتعلم كيفية استخدام بدائل رامدا التعريفية للحسابات والمقارنات والمنطق والشروط.
  • يقدم تدوين جاهل فكرة نمط جاهل ، والمعروف أيضًا باسم "البرمجة الصامتة". بأسلوب لا طائل منه ، لا نرى الحجج مع البيانات التي نعمل معها ، يتم ذلك ضمنيًا. تتكون برامجنا من كتل بسيطة صغيرة تجتمع معًا للقيام بما نحتاج إليه. في النهاية فقط نطبق وظائفنا المركبة على البيانات ذات الصلة.
  • يعيدنا الثبات والكائنات إلى فكرة العمل بأسلوب تعريفي ، هذا هو الوقت المناسب للحصول على الأدوات التي نحتاجها لقراءة وتحديث وتعديل وحذف وتحويل خصائص الكائنات.
  • يستمر الثبات والمصفوفات في الموضوع ويوضح لنا كيفية القيام بعمليات مماثلة مع المصفوفات.
  • تكمل العدسات السلسلة جنبًا إلى جنب مع تقديم مفهوم العدسات ، وهو تصميم يسمح لنا بالتركيز على أجزاء صغيرة من هياكل البيانات الكبيرة. باستخدام وظائف view set over ، يمكننا قراءة القيمة التي تركز عليها العدسة وتحديثها وتحويلها في سياق هياكل البيانات الكبيرة.

ما هي الخطوة التالية؟


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


من أجل معرفة المزيد حول ما يمكن لرمدا القيام به ، أوصيك بدراسة وثائقه . هناك ثروة من المعلومات. يتم تجميع جميع الوظائف حسب نوع البيانات التي تعمل معها ، على الرغم من وجود بعض التداخل. على سبيل المثال ، تعمل بعض وظائف العمل مع المصفوفات أيضًا مع السلاسل ، وتعمل map مع كل من المصفوفات والكائنات.


إذا كنت مهتمًا بموضوعات وظيفية أكثر تعقيدًا ، فإليك بعض الأماكن التي يمكنك الانتقال إليها:


  • محولات الطاقة: هنا يمكنك قراءة مقالة تمهيدية جيدة حول كيفية تحليل السجلات باستخدام محولات الطاقة.
  • أنواع البيانات الجبرية: إذا كنت قد قرأت ما يكفي عن البرمجة الوظيفية ، فقد سمعت عن أنواع الجبر ومصطلحات مثل "Functor" و "Applicator" و "Monad". إذا كنت مهتمًا باستكشاف هذه الأفكار في سياق Ramda ، فراجع مشروع ramda-fantasy ، الذي يطبق بعض أنواع البيانات التي تتوافق مع مواصفات Fantasy Land (أو مواصفات JavaScript الجبرية)



من مؤلف ترجمات المقالة: إذا كان يرضي الرب ، فسأستمر في ترجمة مقالات حول رمضان ، على وجه الخصوص ، أرغب في ترجمة مقال حول استخدام ramda مع redux ، مقال عن المكونات الوظيفية مع وظائف React statless و Ramda ، مقال عن مخفضات وحدات ومحددات ، وربما مقال عن عولمة محددات الاختزال .

Source: https://habr.com/ru/post/ar415037/


All Articles