الفصل 18: البرمجة الوظيفية
18.1 الدوال النقية
دالة نقية: نفس المدخلات تعطي دائماً نفس المخرجات، بدون تأثيرات جانبية.
sad
# ✅ دالة نقية
دالة مربع(ن)
ارجع ن * ن
نهاية
# ❌ دالة غير نقية (تعدل حالة خارجية)
متغير عداد = 0
دالة زد()
عداد = عداد + 1
ارجع عداد
نهاية18.2 Map / Filter / Reduce
sad
متغير أرقام = [1، 2، 3، 4، 5]
# Map — تحويل كل عنصر
دالة حوّل(مصفوفة، دالة_تحويل)
متغير نتيجة = []
لكل عنصر في مصفوفة
نتيجة.أضف(دالة_تحويل(عنصر))
نهاية
ارجع نتيجة
نهاية
# Filter — تصفية
دالة صفّي(مصفوفة، شرط)
متغير نتيجة = []
لكل عنصر في مصفوفة
إذا (شرط(عنصر))
نتيجة.أضف(عنصر)
نهاية
نهاية
ارجع نتيجة
نهاية
# Reduce — تجميع
دالة اختزل(مصفوفة، دالة_تجميع، قيمة_أولية)
متغير نتيجة = قيمة_أولية
لكل عنصر في مصفوفة
نتيجة = دالة_تجميع(نتيجة، عنصر)
نهاية
ارجع نتيجة
نهاية
متغير مربعات = حوّل(أرقام، لامدا(ن) ارجع ن * ن نهاية)
متغير زوجية = صفّي(أرقام، لامدا(ن) ارجع ن % 2 == 0 نهاية)
متغير مجموع = اختزل(أرقام، لامدا(ت، ن) ارجع ت + ن نهاية، 0)