ϵ">]>
7. CVIČENIE Z PREDMETU ÚVOD DO DEKLARATÍVNEHO PROGRAMOVANIA LS 2011/2012
ČASŤ C
http://dai.fmph.uniba.sk/courses/udp/ex/ex07.zip
Dátum: 26. 3. 2012
Odporúčaná verzia CL: 5.81.20
WWW stránka predmetu: http://dai.fmph.uniba.sk/courses/udp/
Kontakt: udp(zavináč)lists.dai.fmph.uniba.sk
Úvodná poznámka. Toto cvičenie je venované funkciám operujúcim na zoznamoch (ex07a), chvostovej rekurzii na zoznamoch (ex07b) a tuplingu zoznamových operácií (ex07c).
Literatúra.
[1] J. Kľuka. Prednášky z Úvodu do deklaratívneho programovania LS 2011/2012.
http://dai.fmph.uniba.sk/courses/udp/udp-prednasky-2012.pdf
[2] D. Guller. Poznámky k prednáškam z CL.
[3] J. Komara and P. J. Voda. Metamathematics of Computer Programming. 2001.
Tupling je technika, pri ktorej funkcia vráti -ticu (po anglicky -tuple) výsledkov. Takáto funkcia spravidla vzniká spojením niekoľkých funkcií, ktoré majú rovnaké argumenty, používajú rovnaký typ rekurzie a ich výsledky sú potrebné súčasne.
-tice vytvárame pomocou párovania. Pretože vieme, že funkcia vždy vráti hodnôt, nemusíme vytvárať zoznam (napr. ), stačí hodnoty jednoducho pospájať párovaním ().
Ak hodnotou funkcie je -tica, k zložkám tejto -tice pristupujeme využitím párovej diskriminácie nasledovne:
Úloha. Zadefinujte funkciu , ktorá rozdelí zoznam na dvojicu zoznamov . Zoznam obsahuje prvých prvkov zoznamu , zoznam obsahuje zvyšné prvky .
Napr.
Špecifikácia:
Využite tupling a návod k predchádzajúcej úlohe, nepoužite pomocné funkcie. Funkciu si môžete predstaviť ako tuplingové spojenie funkcií a z ex07a, podobne ako bola funkcia z cvičenia ex05a spojením funkcií a z ex02b. Chceme, aby platilo:
Testovanie.
Split_test = r:Results
Úloha. Zadefinujte funkciu , ktorá rozdelí zoznam na dvojicu zoznamov . Zoznam obsahuje párne prvky zoznamu , zoznam obsahuje nepárne prvky .
Napr.
Využite techniky z predchádzajúcich úloh, nepoužite pomocné funkcie. Funkciu si môžete predstaviť ako tuplingové spojenie funkcie z ex07a a analogickej funkcie .
Testovanie.
Even_odd_test = r:Results