Programowanie funkcyjne/Funktory/Ćwiczenia

Z Studia Informatyczne
Wersja z dnia 20:28, 19 lip 2006 autorstwa Przemek (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
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ę.)