18-07-2011, 13:25
|
|
|
חבר מתאריך: 11.02.04
הודעות: 16,543
|
|
אני לא בדיוק יודע למה אתה מתכוון(אם תוכל לפרט יהיה טוב).
בכל מקרה הפתרון שמצאתי, הוא כזה. (שים לב שמדובר בלמדה וורדיאק).
קוד:
(define and-l (lambda x
(if (null? x)
#t
(if (and (car x)) (apply and-l (cdr x)) #f))))
(define and and-l)
אם כי בפתרון הזה לא נתן לממש את OR(ולקבל אותה הפונקציאונליות), מדוע?!
כי or לא מעריך את כל המשתנים!
לדוגמה
קוד:
(define or-l (lambda x
(if (null? x)
#f
(if (or (car x)) #t (apply and-l (cdr x))))))
(define or or-l)
בקוד הזה פקודה מהסוג
(or 1 a) תתן שגיאת זמן ריצה (כי a אינו מוגדר)
בעוד שלא כל עובד המקרו המובנה של (or a) בשפת סקים..
נערך לאחרונה ע"י The_Equivocator בתאריך 18-07-2011 בשעה 13:54.
|