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

From Studia Informatyczne

Spis treści

Zadanie 1

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

Wskazówka:

Obiekt z przykładu działa analogicznie do funkcji wywołującej samą siebie, np.

     int f(int x) { return f(x); }

Rozważ obiekt analogiczny np. do takiego układu funkcji:

     int f(int x) { return g(x); }
     int g(int x) { return f(x); }

Zadanie 2

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

Wskazówka:

Ta własność oznacza, że zawsze można zawrócić ze złej drogi... Lub wręcz, że nie ma złych dróg.

Zadanie 3*

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

Zadanie 4

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

  • <x> = x
  • < f(a) > = (< f >.arg:= < a >).val
  • < \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 \lambda-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:

Metoda kopiuj powinna zapisać sposób przywrócenia zawartości w metodzie przywróć, podobnie jak w przykładzie z wykładu.

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.