Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
Nowa wersja
Both sides next revision
|
pl:dydaktyka:pp:haskell:lab-monads-types [2018/05/28 20:37] kkutt [Zadania] |
pl:dydaktyka:pp:haskell:lab-monads-types [2018/05/28 22:21] kkutt [Zadania] |
===== Zadania ===== | ===== Zadania ===== |
- Wykorzystując wiedzę o tym jak tworzyć typeclassy, stwórz jedną o nazwie Intable, która pozwoli na konwersję [Char] to Int poprzez funkcję toInt. Użyj jej jako ograniczenie w funkcji mySuperAdd:<code haskell> | - Wykorzystując wiedzę o tym jak tworzyć typeclassy, stwórz jedną o nazwie Intable, która pozwoli na konwersję [Char] to Int poprzez funkcję toInt. Użyj jej jako ograniczenie w funkcji mySuperAdd:<code haskell> |
mySuperAdd (Intable a) => a->a->Int | mySuperAdd :: (Intable a, Intable b) => a -> b -> Int |
mySuperAdd x y = toInt x + toInt y | mySuperAdd x y = toInt x + toInt y |
mySuperAdd "123" + "12" | ghci> mySuperAdd "123" "12" |
mySuperAdd "123" + (12::Int) | 135 |
| ghci> mySuperAdd "123" (12::Int) |
| 135 |
</code> | </code> |
- Zbuduj nowy typ Osoba, zawierający imię, nazwisko, pesel. Napisz typeclase umożliwiającą porównywanie osób (po peselu) i sortowanie po nazwisku. Czy da się wyświetlić osobę? Co gdyby dziedziczyć po Eq i Ord? Jak zachowywałoby się porównywanie ''%%==,<=%%''? Poniższe powinny działać poprawnie:<code haskell> | - Zbuduj nowy typ Osoba, zawierający imię, nazwisko, pesel. Napisz typeclase umożliwiającą porównywanie osób (po peselu) i sortowanie po nazwisku. Czy da się wyświetlić osobę? Co gdyby dziedziczyć po Eq i Ord? Jak zachowywałoby się porównywanie ''%%==,<=%%''? Poniższe powinny działać poprawnie:<code haskell> |
- Zaimplementuj drzewo binarne umożliwiające przechowywanie dowolnych typów, tak aby dało sie stworzyć je w następujący sposób:<code haskell> | - Zaimplementuj drzewo binarne umożliwiające przechowywanie dowolnych typów, tak aby dało sie stworzyć je w następujący sposób:<code haskell> |
myTree :: Tree Int | myTree :: Tree Int |
myTree = Node 1 (Node 2 Empty (Node 3 Empty Empty)) (Node 4 Empty Empty) | myTree = Node 3 (Node 1 Empty (Node 2 Empty Empty)) (Node 4 Empty Empty) |
</code> | </code> |
- insert (wstawienie elementu) | - insert (wstawienie elementu) |
- nnodes (podającą ilość węzłów) | - nnodes (podającą ilość węzłów) |
- nsum (zliczającą sumę wartości w węzłach) | - nsum (zliczającą sumę wartości w węzłach) |
- remove (usuwanie elementu) | - remove (usuwanie elementu)* |
| |