ϵ">]>
5. CVIČENIE Z PREDMETU ÚVOD DO DEKLARATÍVNEHO PROGRAMOVANIA LS 2011/2012
ČASŤ A
http://dai.fmph.uniba.sk/courses/udp/ex/ex05.zip
Dátum: 12. 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é párovaniu (ex05a) a reprezentácii celých čísel (ex05b).
Literatúra.
[1] J. Kľuka. Prednášky z Úvodu do deklaratívneho programovania LS 2011/2012.
http://ii.fmph.uniba.sk/cl/courses/1-AIN-505-udp/1112ls/udp-screen.pdf
[2] D. Guller. Poznámky k prednáškam z CL.
[3] J. Komara and P. J. Voda. Metamathematics of Computer Programming. 2001.
[CL] Zabudovaná párovacia funkcia. Párovacia funkcia zabudovaná do CL je založená na enumerácii (očíslovaní) binárnych stromov. Zapisuje sa binárnym infixovým operátorom “ , ” (čiarka), napríklad
Operátor “,” má veľmi nízku prioritu a implicitne sa zátvorkuje doprava:
Vlastnosti párovacej funkcie CL. Podobne ako pre iné párovacie funkcie, aj funkcia má párovacie vlastnosti:
ak sa dva páry rovnajú, rovnajú sa po zložkách:
(1) |
zložky páru sú menšie ako pár:
(2) |
každé nenulové číslo je pár:
(3) |
Z vlastnosti (2) vyplýva:
(4) |
[CL] Úloha. CL nepočíta číselnú hodnotu párovacej funkcie, pokiaľ nie je priamo potrebná. Vyskúšajte napríklad dopyt (query):
1+1,2+2 = x
Ak chcete poznať hodnotu párovacej funkcie pre nejaké čísla, môžete využiť napríklad formát , ktorý každé číslo (aj výsledok párovania) zobrazí v desiatkovom zápise:
1+1,2+2 = x:N
alebo použiť párovanie ako argument aritmetickej operácie:
(1+1,2+2)+0 = x
Pri bežnom programovaní nie je vyčíslenie párovacej funkcie potrebné.
[CL] Párová diskriminácia. Na definovanie funkcií, ktoré spracúvajú vstup vytvorený párovaním budeme používať párovú diskrimináciu:
kde a sú nové premenné.
Párovú diskrimináciu umožňujú vlastnosti (3) a (4) z predchádzajúceho odseku.