Symbolické programovanie a LISP, zima 2000/2001

(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:

  1. atóm
    1. číslo
    2. symbol
  2. (S0 S1 ... Sn), ak S0, S1, ... Sn sú s-výrazy

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

príklady

(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

príklad na nekonečno


primitívy:

 

Last Updated on 21-Sep-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk