Del D: Lambda-uttryck
Exempel D1
Vad blir värdet av följande uttryck?
((lambda (x) (+ x x)) 10)
((lambda (x y) (* x y))
(+ 2 3)
(* 4 5))
((lambda (x) (+ x 1))
((lambda (y) (* y 2))
3))
Exempel D2
Vad blir värdet av följande uttryck?
(funcall #'first (quote (a b c))) (funcall #'(lambda (x) (list x x x)) (+ 2 3)) (funcall #'(lambda (x y) (append y x)) '(1 2 3) '(4 5 6))
Exempel D3
Funktionen f definieras på följande sätt:
/ g(x)+y om g(x)<0
|
f(x,y) = | 0 om g(x)=0
|
\ y om g(x)>0
När man beräknar f(x,y) vill man naturligtvis undvika att beräkna g(x) mer än en gång. Ge tre olika lösningar: en med lokal variabel, en med underfunktion och en med lambda-uttryck.
Exempel D4
Vad blir värdet av följande uttryck?
((lambda (x) (list x x)) (list 'a 'a)) (funcall #'(lambda (x) (cons 'x '(quote y))) 'a)
Sidansvarig: Peter Dalenius
Senast uppdaterad: 2004-11-08
