Różnice
Różnice między wybraną wersją a wersją aktualną.
Nowa wersja
|
Poprzednia wersja
Ostatnia wersja
Both sides next revision
|
pl:dydaktyka:pp:haskell:lab-types [2020/04/19 22:33] msl utworzono |
pl:dydaktyka:pp:haskell:lab-types [2020/04/20 09:00] msl [Zadania] |
</code> | </code> |
| |
==== Abstrakcyjne Typy Danych ==== | ==== Parametryzowane Typy Danych ==== |
Abstrakcyjne typy danych w Haskellu to konstruktory polimorficznych typów. | Parametryzowane typy danych w Haskellu to konstruktory polimorficznych typów. |
Typy takie mogą przechowywać wartości wielu różnych typów. | Typy takie mogą przechowywać wartości wielu różnych typów. |
Przykładem takiego typu jest monada Maybe, definiowana jako | Przykładem takiego typu jest typ Maybe, definiowany jako |
| |
<code haskell> | <code haskell> |
ghci> szymon > zenon | ghci> szymon > zenon |
True</code> | True</code> |
- Zaimplementuj funkcję, która będzie wykonywać pewien predykat na elementach listy i w przypadku gdy predykat zwróci True, funkcja zwróci dany element listy, lub Nothing jeśli predykat nie zakończy się True na żadnym z elementów listy. Np. możesz użyć predykatu porównującego osoby po peselu co umożliwi wyszukiwanie pierwszej osoby w liście o danym peselu. | - Zaimplementuj dwuargumentową funkcję ''find'', która jako argumenty przyjmuje listę oraz predykat. Funkcja ma zwrócić pierwszy element opakowany typem ''Maybe'', który spełnia dany predykat (predykat = funkcja zwracająca wynik typu ''bool''). Jeżeli takiego elementu nie ma, zwracane jest ''Nothing'' |
- 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 |