תוכן עניינים
מבוא
מבנה
תחביר
טיפוסים
רשימות
ביטויים בוליאניים
ביטויי התניה
פונקציות
ביטויי קלט/פלט
פונקציות מסדר גבוה
תכנית לדוגמא
נספחים
ביבליוגרפיה
אתר ללימוד מזורז> פונקציות מסדר גבוה

פונקציות מסדר גבוה

פונקציה מסדר גבוה היא פונקציה המעבירה פונקציה כפרמטר או מחזירה פונקציה כתוצאה.
ב-Scheme פונקציות יכולות להיות מועברות כפרמטרים ולהיות מוחזרות כתוצאות.
Scheme אינה בעלת רפרטואר נרחב של פונקציות מסדר גבוה, אך apply ו-map הן שתי פונקציות מסדר גבוה שהן builtin.

הפונקציה apply מחזירה את תוצאת ההפעלה של הארגומנט הראשון על הארגומנט השני.
לדוגמא:
1 ]=>  (apply + '(7 5))

;Value:   12

1 ]=>  (apply max '(3 7 2 9))

;Value:   9

הפונקציה map מחזירה רשימה שהיא תוצאת ההפעלה של הארגומנט הראשון על כל אחד מהאלמנטים בארגומנט השני.
 1 ]=>   (map odd? '(2 3 4 5 6))
 
 ;Value: (() #T () #T ())

להלן דוגמא של פונקציה המועברת כפרמטר. dbl היא פונקצית ההכפלה ב-2.
1 ]=> (define dbl (lambda (x) (* 2 x))) 
 
;Value: dbl 
 
1 ]=> (map dbl '(1 2 3 4)) 
 
;Value: (2 4 6 8) 
 
1 ]=> 

הדוגמא הקודמת יכולה להיכתב גם כך:
1 ]=> (map (* 2) '(1 2 3 4))

;Value: (2 4 6 8)

1 ]=>