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
2.cvičenie
-
- Zadefinujte funkciu sum z
prednášok. Implementujte iteratívnu verziu.
(define (sum term a next b) ...
- Zadefinujte funkciu accumulate,
ktorá (univerzálne) akumuluje hodnoty daného
rozsahu. combiner je
akumulujúca funkcia, null
neutrálny prvok vzhľadom na combiner,
term je funkcia aplikujúca sa
na jednotlivé prvky, start
počiatočný prvok, next
funkcia dávajúca nasledujúci prvok a out?
určuje, či daný prvok ešte patrí do
rozsahu.
(define (accumulate combiner null term start next
out?) ...
- Zadefinujte funkciu accumulate2,
ktorá sa správa rovnako ako predchádzajúca
funkcia accumulate.
Implementujte iteratívnu verziu.
(define (accumulate2 combiner null term start
next out?) ...
- Zadefinujte funkciu accumulate-with-filter,
ktorá akumuluje hodnoty daného rozsahu, pre
ktoré vráti funkcia filter?
hodnotu "pravda", tak ako pri
predchádzajúcich dvoch funkciách.
(define (accumulate-with-filter filter? combiner
null term start next out?) ...
-
- Zadefinujte unárnu funkciu make-exp,
ktorá vráti unárnu funkciu vracajúcu n-té
mocniny.
(define (make-exp n) ...
- Zadefinujte unárnu funkciu make-inv,
ktorá vráti inverznú funkciu.
Inverzná funkcia má hľadať vhodné x
iteratívnym spôsobom.
(define (make-inv f) ...
Last Updated on 28-Sep-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk