"Elméleti" tételek a Deklaratív programozás c. tárgy SML-részéhez A vizsgázónak, 5-10 perces felkészülés után, az alább felsorolt témák közül egyet kell bemutatnia 3-5 percben. Bizonyos esetekben konkrét SML-függvényeket kell ismertetni (pl. a listát megfordító rev vagy a két listát összefűző @ függvényt), ilyenkor a felkészülés részeként célszerű e függvények kódját is leírni. Az alábbi listában a téma megnevezését követően hivatkozunk az SML-jegyzetnek arra a fejezetére, szakaszára (x, (x.y, x.y.z vagy x.y.z alakban) ill. annak az SML-előadásfóliának a sorszámára (i vagy i-j alakban, ahol a sorszám az SML-tárgyrész összes fóliájának összegyűjtött változatára vonatkozik ­ lásd honlap), amely a témával foglalkozik, és amely a válasz kidolgozásához felhasználható. - Érték, függvényérték; típus, típusmegkötés; operátor 2.1.­2.2., 4.1. ; 5­15 - Lista: definíció, jelölés, mintaillesztés, konstruktorműveletek 6.1.­6.2. ; 17­18 - Listakezelő függvények: hd, tl, length, sum, prod 6.3.1., 6.4.­6.5. ; 20­22 - Listakezelő függvények: map, filter, explode, implode 6.3.3., 10.1.3. ; 26, 30­31 - Lokális kifejezés, lokális deklaráció, egyidejű deklaráció 5.1.­5.3. ; 24 - Polimorfizmus 7.1.­7.2. ; 35, 37 - Listakezelő függvények: max, maxl, take, drop 6.3.2., 6.5. ; 33, 37, 42­43 - Logikai műveletek: not, andalso orelse, if-then-else 2.2.4., 4.2.1.3. ; 39­40 - Polimorf műveletek listákkal: isMem, newMem, setOf 7.3. ; 45­46 - Polimorf halmazműveletek listákkal: union, inter, isSubset, isSetEq 7.3. ; 47­48 - Kifejezések kiértékelése: mohó és lusta kiértékelés 4.2. ; 52 - Jobbrekurzió és akkumulátor a fac és iterfib példáján 4.2.1.2., 14.2. ; 53­54, 57 - Összetett adattípusok: ennes és rekord 3.1.­3.2. ; 56, 78 - Listakezelő függvények: append (@), nrev, rev, revApp 6.6. ; 66­67 - Lista redukciója kétoperandusú művelettel: foldl, foldr 10.1.6. ; 68­71 - Felhasználói adattípusok és adatkonstruktorok létrehozása: a datatype deklaráció 8.1. ; 76, 85 - Nemrekurzív monomorf felhasználói adattípusok, pl. felsorolás 8.1.­8.2. ; 86­91 - Nemrekurzív polimorf felhasználói adattípusok, pl. megkülönböztetett egyesítés (diszjunkt unió) 8.3. ; 93­95 - Rekurzív polimorf felhasználói adattípusok, pl. lista, bináris fa 12.0. ; 92, 97­100 - Egyszerű műveletek bináris fákon: nodes, depth 12.1. ; 101­102 - Függvények lambda-jelöléssel, szintaktikus édesítőszerek 9.1. ; 12­13, 39 - Részlegesen alkalmazható és magasabb rendű függvények 9.2.­9.3., 10.1. ; - A feltételes kifejezés, az esetszétválasztás és a mintaillesztés összevetése 2.2.4.1., 4.2.1.3., 8.4. ; 12, 39, 104 - Opcionális érték kezelése, típus és műveletek az Option könyvtárból D.0., D.9. ; 105­106 - Kivétel jelzése és kezelése 11. ; 108­110 - Listák rendezése: beszúró rendezés 13.1 ; 113­116 - Listák rendezése: kiválasztó rendezés; az order típus D.3. ; 123­126 - Listák rendezése: gyorsrendezés akkumulátor nélkül, ill. akkumulátorral 13.2. ; 127­128 - Listák rendezése: fölülről lefelé haladó összefésülő rendezés 13.3.0.­13.3.1. ; 130­131 - Listák rendezése: alulról fölfelé haladó összefésülő rendezés 13.3.2. ; 149­152 - Listák rendezése: simarendezés 13.4. ; 155­156 - Kiíró műveletek: print, makestring, printVal, ...toString D.8., D.12. ; 159­160, 163­164 - Szekvenciális kifejezés: ; és before D.3. ; 161­162, 164 - Egyszerű műveletek bináris fákon: fulltree, reflect 12.1. ; 181 - Bináris fa bejárása 12.2. ; 182­183 - Bináris fa előállítása lista elemeiből 12.3. ; 184­187 - Elem törlése bináris fából 12.4. ; 188­189 - Műveletek bináris keresőfákon 12.5. ; 190­191 - Lusta lista deklarációja, head, tail és consq 15.0. ; 218­219 - Függvények lusta listákra: fromq, takeq, squareq, addq, appendq 15.0.-15.1. ; 239­241