Paradygmaty programowania/Ćwiczenia 9: U podstaw programowania obiektowego — rachunek sigma

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Zadanie 1

Zdefiniować obiekt, który prowadzi do obliczeń nieskończonych. Powinien to być obiekt inny niż [l=ς(x)x.l] podany w przykładzie.

Wskazówka:

Zadanie 2

Dlaczego ważne jest, by relacja * spełniała własność Churcha-Rossera?

Wskazówka:

Zadanie 3*

Napisz interpreter (maszynę wirtualną) ς-rachunku. To jest zadanie nie tyle bardzo trudne, co mozolne...

Zadanie 4

Poniżej przdstawiona jest metodę translacji termów λ-rachunku do obiektów ς-rachunku. Przyjrzyj się jej zasadom i przetłumacz następujące λ-termy: λ(x)x,(λ(x)x)y,λ(x)xx,(λ(x)y)((λ(x)xx)(λ(x)xx)).

  • <x>=x
  • <f(a)>=(<f>.arg:=<a>).val
  • Parser nie mógł rozpoznać (błąd składni): {\displaystyle < \lambda(x)f > = [arg=\varsigma(x)x.arg, val=\varsigma(x)< f >\{x\leftarrow x.arg}]}

Zadanie 5

Napisz obiekt, który będzie się zachowywał podobnie jak komórka pamięci. Obiekt taki przechowuje pewną zawartość. Zawartość można zmieniać za pomocą metody ustaw i odczytywać za pomocą metody pobierz. Możesz wykorzystać fragmenty zapisane w konwencji λ-rachunku.

Zadanie 6

Rozbuduj obiekt z poprzedniego zadania o możliwość zrobienia kopii zapasowej zawartości (metoda kopiuj) i odtworzenia zawartości z owej kopii (metoda przywróć). Kopia zawartości może być przechowywana w dodatkowym polu kopia.

Zadanie 7*

Skostruuj obiekt działający dokładnie tak, jak w poprzednim zadaniu, ale nie używający do tego celu osobnego pola kopia.

Wskazówka:

Zadanie 8

Napisz obiekt punktzero, zawierający pola wspx i wspy oraz metody przesuńx i przesuńy. Intuicyjnie, początkowo obiekt ten odpowiada punktowi w środku układu współrzędnych. Wywołania metod przesuwają odpowiednią współrzędną o jeden.