תכנות פונקציונלי – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ ←‏ביטויי למבדא: המשך haskell
שורה 54:
=== ביטויי למבדא ===
בתכנות פונקציונלי ניתן ליצור פונקציה "על הדרך", כביטוי בתוך ביטוי אחר. כך למשל במקום הדוגמה של filter לעיל ניתן ליצור את הפרדיקט בתוך הקריאה ל-filter:
<source lang="ocamlhaskell">
- List.filter (fn \x =-> x<3 mod 2 = 0) [1,2,3,4,5];
-- result: [1,2]
val it = [2,4] : int list
</source>
 
יצירת פונקציה בצורה כזאת מעלה את הצורך בתמיכה ב[[סגור (שפות תכנות)|סגור]] בשפת התכנות.
 
קיומם של ביטויי למבדא מאפשר חישוב עצל של ביטויים, דבר המאפשר גמישות ב[[#בקרת זרימה]]. הקוד הבא בשפת ML מדפיס "hello world":
<source lang="ocaml">
map (fn f => f()) [
שורה 68:
];
</source>
 
=== List Comprehension ===
שימוש משולב בפונקציות map ו-filter יחד עם ביטויי למבדא הוא נפוץ כל כך שבשפות מסויימות קיים תחביר מיוחד עבורו. אם בשפת ML כותבים: