Programowanie funkcyjne/Funktory/Ćwiczenia
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
\cwiczenia
- Podaj sygnaturę implementacji struktury danych liczb zespolonych
- (wyłącznie konstruktory i selektory biegunowe i prostokątne).
- Sygnatura powinna pasować do dowolnej implementacji
- biegunowej, prostokątnej lub mieszanej.
- Naszkicuj implementację reszty pakietu liczb zespolonych,
- jako funktor, którego parametrem jest implementacja struktury danych,
- a wynikiem w pełni funkcjonalny pakiet.
- Przypomnijmy sobie pakiet liczb wymiernych z poprzedniego wykładu.
- Można go zapisać w postaci funktora, sparametryzowanego
- (wybranym typem) liczb całkowitych.
- Podaj sygnaturę liczb całkowitych zawierającą wszystkie
- operacje potrzebne do zaimplementowania pakietu liczb wymiernych
- ze skracaniem ułamków.
- (Potrzebne są
- operacje arytmetyczne, równość, modulo i ew.\
- porównywanie.)
- Naszkicuj budowę funktora implementującego taki pakiet
- liczb wymiernych.
- Wyobraźmy sobie pakiet implementujący wielomiany, wraz z
- rozmaitymi operacjami na wielomianach
- suma, różnica, iloczyn,
- iloraz, reszta z dzielenia, porównanie, pochodna, itp.
- Pakiet taki może być sparametryzowany typem liczb (ciałem),
- nad którym rozpatrujemy wielomiany.
- Podaj odpowiednie sygnatury i naszkicuj sposób implementacji
- pakietu wielomianów jako funktora.
- Czy implementacja jest na tyle ogólna, aby pakiet działał nie tylko
- dla liczb zmiennopozycyjnych, ale również dla zespolonych i
- wymiernych?
- Korzystając z wyników poprzednich ćwiczeń podaj, jak można
- skonstruować pakiet funkcji wymiernych?
- (Jest to pakiet liczb wymiernych, których współczynniki są
- wielomianami.)
- Korzystając z wyników poprzednich ćwiczeń podaj, jak można
- skonstruować pakiet wielomianów dwóch zmiennych?
- (Są to wielomiany jednej zmiennej, których współczynniki są
- wielomianami drugiej zmiennej.)
- Porównaj funktory z mechanizmem dziedziczenia w programowaniu
- obiektowym.
- W jaki sposób można zasymulować hierarchię klas za pomocą funktorów?
- Co z rzutowaniem typów?
- Co z metodami wirtualnymi?
- (Nie wiem czy to dobre zadanie.
- Może tak, a może jest już zbyt późno, ale jakiś związek widzę.)