(vychádza z prednášky
Funkcionálne programovanie, Ivan Kalaš)
Petrovič Pavol, Ústav Informatiky, č.d. 15
e-mail: ppetrovi@dent.ii.fmph.uniba.sk
www k prednáške: http://www.ii.fmph.uniba.sk/vyuka/lisp
1.prednáška
Literatúra:
Software:
Prístup k údajom:
S-výraz:
hodnota S-výrazu:
1a) číslo
1b) hodnota asociovaného S-výrazu
2a) hodnota(S0)(hodnota(S1),
... hodnota(Sn))
2b) primitívy
[] 5 5
[] (define a 4) a
[] (define ahoj 3) ahoj
[] a 4
[] ahoj 3
[] + #<proc +>
[] (+ 3 2) 5
[] (define b 1) b
[] (define c (+ a b)) c
[] c 5
[] (+ (* (/ 4 2) 5) (- 3 2)) 11
[] (define (f a b) (+ a b)) f
[] (f 3 2) 5
[] (define d (+ 3 (f 4 5))) d
[] d 12
príklady:
[] (define (p) (* 2 30)) p
[] (define (p1) p) p1
[] (define (p2) (p)) p2
[] p #<proc p>
[] (p) 60
[] (p1) #<proc p>
[] (p2) 60
[] ((p1)) 60
[] ((p2)) #<error>
podmienky:
(if <test> <true> <false>)
(cond (<test1> <true1>) (<test2>
<true2>) ...)
(not <test>)
(and <test1> <test2> ...)
(or <test1> <test2> ...)
[] (and) #T
[] (or) ()
pravdivostné hodnoty:
vyhodnocovanie:
[] (g 3)
substitučný model |
aplikačný model |
---|---|
(g 3) (na2 (plus1 3)) (* (plus1 3) (plus1 3)) (* (+ 3 1) (+ 3 1)) (* 4 4) 16 |
(g 3) (na2 (plus1 3)) (na2 (+ 3 1)) (na2 4) (* 4 4) 16 |
GOPHER | SCHEME |
nepadne na "nekonečno" | je jednoduchšie implementovateľný vyhodnotí argumenty len raz |
primitívy:
Last Updated on 21-Sep-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk