Göm menyn

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))

Se svar

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))

Se svar

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.

Se svar

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)

Se svar


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2004-11-08