(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
4.prednáška
map, apply
(map <f> <zoz>)
map aplikuje funkciu <f> na každý prvok
zoznamu <zoz> a vráti zoznam výsledkov týchto
aplikácií
(apply <f> <zoz>)
apply aplikuje funkciu <f> s
parametrami zo zoznamu <zoz>
[] (map 1+ '(1 2 3 4)) (2 3 4 5) [] (apply + '(1 2)) 3
sequence
(sequence <S-exp1> <S-exp2>
... <S-expn>)
sequence postupne vyhodnotí S-výrazy <S-exp1>,
<S-exp2>, ... <S-expn> a ako výsledok
vráti hodnotu posledného S-výrazu <S-expn>
Niektoré funkcie použitie sequence pri postupnosti S-výrazov vyžadujú (napr. if), iné funkcie (napr. define, cond, lambda, let) pracujú s postupnosťou S-výrazov už z definície (použitie funkcie sequence však chybu nespôsobí).
príkladFunkcia vypis vypíše ľubovoľný S-výraz (atóm, vlastný zoznam, nevlastný (bodkový)).
množiny
interface:
reprezentácie:
Funkcia careful-car (resp. careful-cdr) sa správa rovnako ako car (resp. cdr) s jedinou výnimkou:
[] (careful-car '()) () [] (careful-cdr '()) ()
Funkcia assoc-car (resp. assoc-cdr) hľadá v zozname dvojíc tú, ktorej prvou (resp. druhou) zložkou je hľadaný prvok.
[] (assoc-car 2 '((1 . 2) (2 . 3) (3 . 4))) (2 . 3) [] (assoc-car 2 '((1 . 2) (2 . 3) (3 . 4))) (1 . 2)
[] (define sl->eng (generate '())) sl->eng [] (define sl->eng ((sl->eng 'learn) 'dva 'two)) sl->eng [] ((sl->eng 'translate) 'dva) two [] ((sl->eng 'translate<-) 'two) dva
Last Updated on 19-Oct-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk