IB015 – Domácí úkol Domácí úkol 4 Příklad 4.1 Určete typ následujících výrazů. Pak je převeďte z pointfree tvaru do pointwise tvaru (vytvořte z nich λ-funkce s dostatečným množstvím parametrů) a upravte je do co možno nejčitelnější podoby. Dejte si pozor, aby byl výraz po převodu ekvivalentní původnímu výrazu (významově i typově). I typově nekorektní výrazy se pokuste upravovat až do chvíle, kdy narazíte na typovou inkonzistenci. a) flip const map b) flip . const map c) flip const . map d) flip . const . map e) flip (.) const map f) flip const (.) map g) flip (.) const . map h) flip . const (.) map i) flip (.) const (.) map Poznámky k řešení Výsledek musí mít všechny funkce v pointwise tvaru (ne pouze tu vnější). Tedy správně je \x y -> map (\z v -> z:v) x y a ne \x y -> map (:) x y. Při převodu zapište všechny mezivýsledky i s popisem, co se v daném kroku stalo (neprovádějte víc než jednu transformaci na jednom řádku). Typ stačí zapsat pouze výsledný (není potřeba psát mezikroky určování typu). Vaše řešení by mohlo vypadat třeba následovně: const (:) :: b -> a -> [a] -> [a] const (:) -- puvodni vyraz \x -> const (:) x -- pridani formalniho parametru x \x -> (:) -- aplikace funkce const \x y -> (:) y -- pridani formalniho parametru y \x y z -> (:) y z -- pridani formalniho parametru z \x y z -> y : z -- prepis (:) do infixu Při řešení je povoleno využívat interpret jazyka Haskell, není však povoleno spolupracovat (případné plagiátorství oceňujeme zápornými body). Vzhledem k náročnosti úlohy stačí na zisk bodu mít úplně (!) správně alespoň 6 podúloh. Každé řešení musí obsahovat jméno, UČO a skupinu řešitele (vyhrazujeme si právo neopravovat nepodepsaná řešení). Řešení odevzdávejte elektronicky do nachystané odevzdávárny v ISu. Na úkol máte opět jeden a půl týdne, deadline odevzdání je tedy 22. října 23:59. Doporučované formáty odevzdání jsou txt a pdf. Řešení, která nedokážeme přečíst, nebudou uznána (platí zejména pro odpovědi vyřešené na papír a nascanované). 1