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
3.cvičenie
- príklady k zoznamom
- Zadefinujte binárnu funkciu my-append,
ktorá spája dva zoznamy list1
a list2 do jedného.
(define (my-append list1 list2) ...
- Zadefinujte unárnu funkciu last,
ktorá vráti posledný prvok zoznamu list0.
(define (last list0) ...
- Zadefinujte unárnu funkciu my-reverse,
ktorá otáča zoznam list0.
(define (my-reverse list0) ...
- Zadefinujte binárnu funkciu my-append2,
ktorá spája dva zoznamy list1
a list2 do jedného. Implementujte
iterativnu verziu.
(define (my-append2 list1 list2) ...
- Zadefinujte binárny predikát each?,
ktorý vráti hodnotu "pravda", ak
každý prvok zoznamu list0
vyhovuje predikátu p?.
(define (each? list0 p?) ...
- Zadefinujte binárny predikát at-least-one?,
ktorý vráti hodnotu "pravda", ak aspoň
jeden prvok zoznamu list0
vyhovuje predikátu p?.
(define (at-least-one? list0 p?) ...
- Zadefinujte unárnu funkciu deep-reverse,
ktorá otáča S-výraz exp
až do poslednej úrovne. Príklad:
(deep-reverse '(1 2 (3 4) 5)) --> (5 (4 3) 2
1)
(define (deep-reverse exp) ...
- Zadefinujte binárny predikát my-equal?,
ktorý vráti hodnotu "pravda", ak
S-výrazy exp1 a exp2
majú rovnakú štruktúru.
(define (my-equal? exp1 exp2) ...
- Zadefinujte unárnu funkciu my-copy,
ktorá vráti kópiu S-výrazu exp.
(define (my-copy exp) ...
- Zadefinujte unárny predikát seq?,
ktorý vráti hodnotu "pravda", ak
S-výraz exp je vlastný zoznam
(alebo atóm).
(define (seq? exp) ...
- Zadefinujte unárnu funkciu flatten,
ktorá vráti zoznam atómov z S-výrazu exp.
(define (flatten exp) ...
- príklady k map
- Zadefinujte binárnu funkciu my-map,
ktorá vráti zoznam výsledkov aplikácií
funkcie f na jednotlivé prvky
zoznamu list0. T.j. funkcia
my-map sa správa rovnako ako funkcia
map.
(define (my-map f list0) ...
- Zadefinujte binárnu funkciu filter,
ktorá vráti zoznam prvkov zo zoznamu list0
vyhovujúcich predikátu p?.
Využite funkciu map.
(define (filter p? list0) ...
- Zadefinujte binárnu funkciu pairs,
ktorá vráti zoznam všetkých dvojíc
vzniknutých zo zoznamov list1 a
list2, pričom v každej
dvojici prvý prvok patrí do zoznamu list1
a druhý do zoznamu list2.
Využite funkciu map.
(define (pairs list1 list2) ...
- Zadefinujte unárnu funkciu flatten2,
ktorá vráti zoznam atómov z S-výrazu exp.
Využite funkciu map.
(define (flatten2 exp) ...
Last Updated on 05-Oct-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk