You are on page 1of 7

Ak asociatvna binrna opercia +(v krku) m neutrlny prvok a, s ktorm tvor monoid potom: a- me by iba argumentom foldr, nie

vak foldl b- me by iba argumentom foldr, alebo aj foldl c- me by iba argumentom foldr, foldl a map Vraz (foldl () TRUE) je typu a- [bool] bool b- (bool bool bool) bool c- bool Funkcia f je definovan nasledovne: f[x] = x f(x : y : z) = f (y : z) je svojm vznamom funkciou: a- last b- tail c- snd Statick typov kontrola: a- znamen odvodenie typov vrazov poas vykonvania, take vpoet nezlyh na hodnotch neprstupnch typov. b- znamen odvodenia kadho typu vrazu poas prekladu , take vpoet nie je vykonvan na hodnotch neprstupnch typov c- znamen odvodenia kadho typu vrazu poas prekladu, take vpoet zlyh na hodnotch neprstupnch typov Abstraktn typ a- mnoinou prekrvanch operci a abstraktnch hodnt b- mnoinou opercii, ktor musia by prekrvan c- mnoinou opercii, ktor mu by prekrvan Funkcia height v tvare height (Tip x) = a height (Bin t1 t2) = b + (height t1) +(v krku) (height t2) Definuje vku binrneho stromu za predpokladu, e a. a=0, b=1, +(v kruzdu, alebo neviem co je to tam za znak v tom kruzku) =max b. a=1, b=0, +(v kruzku) = + c. a=0, b=1, +( v kruzku) = min Pre nestriktn funkciu f plat: a) fa = kde a b) f = c) f =a kde a Ak iaston funkciu definujeme a) ako iaston, je to nespvny postup pretoe vpoet me zlyha b) ako pln je to spvny postup pretoe implementcia mus prinajmenom uspokojova pecifikciu c) ako iaston je to sprvny postup lebo iaston funkcia m aj nedefinovan hodnotu Funkcia merge v tvare: merge ::[]->[ ]->[ ] merge [] ys = ys merge (x : xs) [] = x : xs merge (x : xs) (y : ys) = x: (merge xs (y:ys)) if x<=y y: (merge (x:xs): ys), otherwise....... a) spoj usporiadan zoznam s neusporiadanm do usporiadanho zoznamu b) spoj kad dva zoznamy do jednho usporiadanho zoznamu c) spoj dva usporiadan zoznamy do jednho usporiadanho zoznamu Entica je: a) sumrny nerekurentn algebraick typ b) nsobkov rekurentn algebraick typ c) nsobkov nerekurent algebraick typ Funkcia size a hight v tvare: Size (node x ts) = 1+sum(map size ts) Hight (node x ts) = 0 if........ = 1+max (map height ts) othewise Charakterizuj vekos a vku a) Veobecnho stromu b) Binrneho stromu c) Znakovanho binrneho stromu Ak je abstrakn funkcia bijektvna, potom a- pre kad hodnotu reprezentcie existuj prve dve hodnoty abstraktnho typu b- kadej hodnote abstraktnho typu zodpoved jedin hodnota reprezentcie a naopak

c- pre kad hodnotu abstraktnho typu existuj prve dve hodnoty reprezentcie Pri dkaze platnost vzahu E1 = E2 trukturlnou indukciou na algebrickom tvare t ::= C1 | C2 (t ) (t ) a- vzah me plati aj vtedy, ak hodnota vrazu E1 pre (C1 x) je definovan a sasne hodnota vrazu E2 pre (C1 x) je nedefinovan b- vzah me plati aj vtedy, ak hodnoty vrazov E1 a E2 pre hodnoty (C1 x) s nedefinovan c- me plati len vtedy, ak hodnoty vrazov E1 a E2 hodnoty (C1 x) s definovan Vraz lambda v tvare (E1 E2) a- nie je abstrakciu lambda a preto jeho hodnota neme by abstrakciou lambda b- je abstrakciou lambda c- nie je abstrakciu lambda, ale jeho hodnota me by abstrakciou lambda Nech E1 E2 a E3 s vrazy. Potom plat vzah a- ( E1 E2 E3) = E1 (E2 E3) b- ( E1 E2 E3) = E1 E2 E3 c- ( E1 E2 E3) = (E1 E2) E3 Funkcia rotr v tvare rotr (Bin x (Bin y t1 t2) t3) = Bin y t1(Bin y t2? Alebo 1? (Bin x t2 t3) //toto s monosti k otzke .16 a- zmen vku podstromu t2 b- nemen vku podstromu t2 c- zv vku podstromu t2 Normlne poradie redukcie je: a- vonkajou redukciou zava b- vonkajou redukciou sprava c- vntornou redukciou sprava Ak binrny strom t obsahuje znaky, potom hodnota vrazu (foldbtree(++) mapbtree unit) t kde unit x = [x] a- je strom obsahujci reazce znakov b- je zoznam obsahujci reazce znakov c- je reazec znakov Funckia f typu C a a a definovan v typovej triede C a) me by prekrvanou operciu, aj ke nie je definovan v iadnom z prpadov typovej triedy b) neme by prekrvanou operciu, pretoe nesmie by definovan aj v niektorom z prpadov typovej triedy c) neme by prekrvanou operciu, ak nie je definovan v iadnom z prpadov typovej triedy Nech f je injektvna, ale nie je bijektvna funkcia, a id je identita. Potom hadan rieenie, ktorm je inverzn funkcia f -1 k funkcii f , mono njs a) na zklade vzahu id = f -1 f b) na zklade vzahu id = f f -1 alebo vzahu id = f -1 f c) na zklade vzahu id = f f -1 Vzah (x . E) y . E[y/x] je zmenou alfa, za predpokladu, e a) x nie je von v E b) y nie je von v E c) y je von v E V loklnej defincii v tvare: f=g a) f je funkcia a g me by kontanta alebo premann volan v tejto defincii b) f je funkcia a g je vdy funkcia c) f je premann a g me by kontanta alebo premann volan v tejto defincii Je dan typ T v tvare: data T a = B a | C (T a) (T a) (T a) Typ vrazu (C (B 'B')) je: a) T Char b)(T a) -> (T a) -> (T a) c)(T Char) -> (T Char) -> (T Char) Funkcia f definovan nasledovne f n [] = [] f n (x:y) = [n x ] ++ f n y je svojm vznamom funkciou: a) map b) init c) takewhile Sumrny typ

a) Je abstraktn typ na ktorho hodnoty mono poui vraze operciu stania. b) Je algebraick typ, ktor je definovan viac ako jednm kontruktorom. c) Je abstraktn typ na ktorho hodnoty mono poui vo vrazoch operciu stania Primitvne typy Char a Bool s: a) kontruktorimi b) typovmi premennmi c) typovmi kontantami lohou kontruktora vo vraze je: a) defincia polymorfickho typu b) defincia hodnoty c) defincia monomorfickho alebo polymorfickho typu Zmena eta: a) definuje krok vpotu b) defunuje zmenu mien premennch lambda c) zvyuje efektvnos vpotu Poda Church-rosserovej vety I: a) normlna forma vrazu nieje zvisl od str......... b) normlna forma vrazu je zvisl od strat............., prpade e je definovan c) normlna forma vrazu je zvisl od strat............ Pri programovan fo funkcionlnom jazyku me by pecifikcia zrove implementciou za predpokladu: a) e je neformlna a je v tvare funkcie priom transformcia do vykonatelnho tvaru nieje potrebn b) e je formlna a navye v tvare funkcie priom je nevyhnutn transformcia do vykonatenho tvaru c) aj je formlna a je v tvare funkcie a je v tvare funkcie priom transformcia do vykonatenho tvaru nieje potrebn Algebraicky typ T data T a = N a (T a) a) je to strom Algebraicky typ je implementarny a) typovou triedou a vzdy neprazdnou mnozinou pripadou tejto triedy. Abstraktny typ je c) mnozinou prekryvanych operacii Poradie definicii funkcii vo funkcionalnom programe c) nema nikdy vplyv na vysledok vypoctu Vyraz (foldr (&&) True) je typu b) [Bool] -> Bool Vo vyraze (f o g) a) hodnota funkcie g musi byt rovnakeho typu ako argument funkcie f. Vonkajsi vyraz lambda(\) \x. \y. + x y a)je abstrakciou lambda Binarny vyhladavacy strom je vyvazeny iba vtedy c) ak vsetky jeho podstromy su vyvazene a sklon v absolutneh hodnote je mensi ako 2 Vo vyraze (map(o+) E), kde E je vyraz, operaciou (o+) mozno pouzit iba za predpokladu ((o+)= je plus v kruzku) A)ze je to polymorfna. b) ze je to unarna. c) ze je binarna funkcia je je definovana nasledovne f (x:y) = x je svojim vyznamom funkciou a) head Sumarny typ c) je algebraicky typ, ktory je definovany viac ako jednym konstruktorom. Vyraz ((E1 E2) E3) je ekvivalentny vyrazu b) (E1 E2 E3) Typova definicia funkcie F v tvare f:: [a] -> (a,b) c) neumoznuje funkciu f aplikovta na ziadny vyraz, lebo je nespravna Ak je abstrakcna funkcia surjektivna, potom to znamena ze: c) existuje viacero reprezentacii udajov pre implementaciu abstraktneho typu. 18 Podla Church-Rossovej vety 1 C) normalna forma vyrazu je zavisla od strategie vypoctu iba v tom pripade, ze existuje.

19. Je danny typ T v tvare: data T a = B | C a (T a) (T a ) (T a) typ vyrazu (C 2 B B) je (podla vasho uvazena) b) Num a => T a -> T a -> T a Hodnota vyrazu (\x. Cons x Nil) (\x.\y. + x y) kde lambda = \ b) je dvojprvkovy zoznam obsahujucich binarnu funkciu. Sumarny algebraicky typ c) musi obsahovat aspon dva konstruktory Predpokladom, aby platil vstah zipWitch f [1..3] [11..13] == [ 14 ] i<- [1..3] je definicia funkcie f v tvare b) f x y = y - x + 4 Ak binarna asociativna operacia o+ nema neutralny prvok a, potom ((o+)= je plus v kruzku) b) moze byt argumentom funkcie foldr1 a foldrl1, nie vsak foldr alebo foldl. 29.Znamena kde lambda = \ (\x.E) == \y, E |y/x| ak y je viazana v E a) e zamenu alfa Ak je abstrakn funkcia bijektvna, potom a. existuje prav jeden reprezentcia dajov pre implementciu abstraktnho typu. b. pre abstraktn typ neexistuje iadna reprezentcia dajov. c. existuje viacero reprezentcii dajov pre implementciu abstraktnho typu. Vyraz (foldr (||) True ) d. je funkciou jednho argumentu, ktorej aplikcia na tento argument ma vdy hodnotu True. e. ma hodnotu True. f. je funkciou jednho argumentu, ktorej hodnota je zvisl od hodnoty tohto argumentu Funkcia f je definovan nasledovne f a [] = [] f a (b:c) | a b = b:fac | otherwise = [] je svojm vznamom funkciou: g. takeWhile h. filter i. dropWhile Hodnotou aplikacie (x. y. X z) (x. +x) je j. ( +x y) k. (y. (x. +x) y) l. (x. y. +x y) iaston funkcia mus byt definovan ako iaston, pretoe defincia , ma presne vystihova matematick vlastnos funkcie. m. mus by definovan ako pln, v opanom prpade vpoet zlyh n. me by definovan ako pln, lebo implementcia m pokrva pecifikciu Typov trieda o. mus obsahova definciu typu opercie abstraktnho typu aj definciu tejto opercie. p. nemus obsahova definciu typu opercie abstraktnho typu, avak mus obsahova definciu tejto opercie. q. mus obsahova definciu typu opercie abstraktnho typu, ne vak definciu opercie. Hodnotu vrazu (foldBtree (+) o mapBtree (const 1)) t Kde const k x = k je r. vekos binrneho stromu s. celkov poet vrcholov binrneho stromu t t. vku binrneho stromu t Funkcia vyieho radu je u. Funkcia ktorej argumentom a hodnotou me byt funkcia. v. Funkcia, ktorej argumentom a hodnotou je typ. w. Funkcia, ktorej argumentom a hodnotou je aplikcia funkcie.

Algebricky monomorfn typ je definovan typovou funkciou x. Ktor mus mat typov premenne. y. Ktor je typovou kontantou. z. Ktor me ale nemus mat typov premenne. Poda Church-Rosserovej vety 1 aa. Normlna forma vrazu nie je zvisl od stratgie vpotu. bb. Normlna forma vrazu je zvisl od stratgie vpotu. Normlna forma vrazu je zvisl od stratgie vpotu iba v tom prpade, e existuje Pre binrnu operciu (Plus v krku) a vrazy E1 a E2 plat: cc. Vyraz ((E2 Plus v krku) E1 ) je zameniten s vrazom ((E1 Plus v krku E2 ) dd. Vyraz (( Plus v krku E1) E2 ) je zameniten s vrazom ((E1 Plus v krku E2 ) ee. Vyraz (( Plus v krku E1) E2 ) je zameniten s vrazom ((E2 Plus v krku E1 ) Hodnota aplikacie (x.x) (x.x) ff. Identicka gg. Binrna funkcia hh. Konstanta Kompozicia (o) je typu ii. (a->b) ->(b->c) ->(a->c) jj. (b->c) ->(a->b) ->(a->c) kk. (a->b) ->(b->c) ->a->c Je dan typ T v tvare: data T a = B a | C (T a) (T a) (T a) Typ vrazu (C (B 'B')) je: a) (T Char) -> (T Char) -> (T Char) b) (T a) -> (T a) -> (T a) c) T Char Typov defincia funkcie F v tvare f:: [a] -> (a,b) ll. neumouje funkciu f aplikovta na vyraz, lebo typu [Char] mm. neumouje funkciu f aplikovta na ziadny vyraz, lebo je nespravna nn. umoznuje funkciu f aplikovta na vyraz typu (Int, Char) Kontruktor v definicii algebraickeho typu oo. Definuje typ funkcie. pp. Definuje tento algebraicky typ qq. Nemozno pouzit. Funkcia qsort definovana nasledovne: Qsort [] = [] Qsort (x:xs) =[y | y <- xs. Y <- x] ++[x]++ [y | y <- xs. Y > x] rr. Definuje iba jeden krok algoritmu rzchleho triedenia. ss. Definuje algoritmus rzchleho triedenia tt. Definuje vztvorenie jednoprvkoveho zoznamu [x] uu. Nasobny typ a) Je algebraick typ, ktor je definovan prave jednm kontruktorom. b) Je algebraick typ, ktor je definovan aspon dvoma kontruktormi. c) Je abstraktn typ na ktorho hodnoty mono poui vrazch operciu nasobenia.dd Abstraktn typ je vv. mnoinou prekrvanch operci a abstraktnch premennych. ww. mnoinou abstraktnch premench. xx. nanajvys prekrvanych operacii. Ak je specifikacia implementaciou potom ulohou transformacie je yy. Dokaz platnosti implementacie zz. Odvovodnenie vykonatelnho tvaru programu. aaa. Nanajvys zvysenie efektivnosti vypoctu.

Variantny typ je a) nasobny nerekurzivny algebraicky typ b) sumarny nerekurzivny alegebraicky typ c) sumarny rekurzivny algebraicky typ Typova definicia funkcie f v tvare f::(a,a) -> [a] a) umoznuje funkciu f aplikovat na vyraz typu (int,[char]) b) neumoznuje funkciu f aplikovat na ziadny vyraz lebo je nespravny c)neumoznuje funkciu f aplikovat na vyraz typu (int,[char])

Ciastocna funkcia a) musi byt definovana ako uplna, v opacnom pripade vypocet zlyha b) moze byt definovana ako uplna, lebo implementacia ma pokryvat specifikaciu c) musi byt definovana ako ciastocna pretoze definicia ma presne vystihovat matematicku vlastnost funckie Ak formalna specifikacia nie je implementaciou potom implementaciu mozno ziskat a) iba odvodenim b) iba navrhom c) navrhom alebo odvodenim Konstruktor v definicii algebraickeho typu a) Sluzi na definiciu algebraickeho aj abstraktneho typu, al je pouitelny v typovej triede b) Sluzi iba na definiciu algebraickeho typu c) Sluzi na definiciu algebraickeho typu aj na konstrukciu udajovych struktur, ak je pouzity vo vyrazoch. Dynamicka typova kontrola a) znamena odvodenie typov vsetkych vyrazov pocas vykonavania. b) znamena odvodenie typu kadho vyrazu pocas prekladu a ostatnch vyrazov po cas vykonavania. c) znamena odvodenie typu kadho vyrazu pocas prekladu. zakladnymi typmi v programovacich jazykoch b)mozu byt primitivne a niektore algebraicke typy. a)su vzdy iba primitivne typy c)mozu byt primitivne, algebraicke alebo aj abstraktne typy v zavislosti od konkretneho jazyka. Zamena (x . E) y . E[y/x] Ak y je viazana v E a) definuje zmenu alfa. b) Definuje zamenu eta c) Definuje zamenu beta. Hodnotou vyrazu (foldbtree(+) mapBtree (cons 1)) t Kde k x = k a) Celkovy pocet vrcholov binarneho stromu. b) Velkost binarneho stromu c) Vysku binarneho stromu Vyraz (foldr (++) []) je typu a) [a] b) [ [a]] -> [a] c) [a] -> [a] Je dana funkcia f v tvare f xs = [(* x) | x <- xs] Typ funkcie f je a) Num a => [a] -> [a->a->a] b)Num a => [a] ->[ a] c)Num a => [a] -> [a->a] poradie rovnic v definicii ciastecnej funcie na zaklade vzorcov a) ma vplyv na jej hodnotu , ak je funkcia definovana uniformne b) nema vplyv na jej hodnotu , ak je funkcia definovana jednoznacne c) vzdy ma vplyv na jej hodnotu, lebo ide o ciasocnu funkciu Hodnota vyrazu foldr (+) 1 (map (f 0) xs) where f k x = k je a) je dlzka zoznamu xs b) je konstanta 0 c) je konstanta 1 Hodnota vyrazu (reverse(map(+4)[1,2,3]))je a) [4,1,2,3 b) [7,6,5]

c) [4,3,2,1] Prekryvanie je druh typoveho polymorfizmu, a)ktory umoznuje pomenovat dve alebo viac funkcii s roznym vyznamom tym istym menom b) ktory umoznuje pomenovat jednu funkciu viacerymi menami c)v ktorom kazda funkcia ma jedinu definiciu, ktorej vyznam je zavisli od argumentov funkcie Funkcia f definovana nasledovne f x [] = [] f x (y:z) | x y = y:fxz | otherwise =fxz Je svojim vyznamom funciou: a)dropWhile b)takeWhile c)filter Premenne x a y v abstracii lambda (x. + x y) a)su v tejto abstrakcii lambda volne b)su vo vyraze (+ x y) volne c)su v tejto abstrakcii lambda viazane Ak prediat platnosti ma pre reprezentaciu udajov abstrakciu typu hodnotu True,potom a)vsetky operacie abstraktneho typu mozno definovat priamo v typovej triede b)definicia operacii abstraktneho typu nevyzaduje test na platnost c) vsetky operacie mozno definovat v pripadoch typovej triedy Vyraz moze byt v slabej prefixsnej normalnej forme a)iba pri pouzity vnutornej redukcie b) iba pri pouzity vonkajsej redukcie c)pri pouzity vnutornej aj vonkajsej redukcie Funkcia f definovana nasledovne f [x] = [] f (x:y:z) = x : f (y:z) je svojim vyznamom funkciou: a)fst b)head c)init Ak je urcita operacia prekryvana, potom a)patri prave jednemu abstraktnemu typu b)patri aspon jednemu asbstrktnemu typu c)patri vsetkym abstraktnym typom V parametrickom polymorfnom typovom systeme definicia typu funkcie a)rozsiruje jej najvseobecnejsi typ, co sluzi na pridavnu kontrolu typov b)zuzuje jej najvseobecnejsi typ, co sluzi na pridavnu kontrolu typov

You might also like