|
|
Linia 1: |
Linia 1: |
| == Wstęp == | | == Wstęp == |
|
| |
|
| W poniższych zadaniach używamy m.in. następujących definicji funkcji
| | == Zadanie == |
|
| |
|
| S f g x = (f x) (g x)
| | == Zadanie == |
| K x y = x
| |
| main = S K K 7
| |
|
| |
|
| == Zadanie - zmienne nielokalne == | | == Zadanie == |
| | |
| Rozważmy język ze strukturą blokową i funkcjami lokalnymi (np. wariant Pascala), dopuszczający funkcje jako argumenty i wyniki funkcji.
| |
| Podaj przykład funkcji dającej w wyniku swoją funkcję lokalną, oraz jej wywołania, które mogą przysporzyć kłopotu przy klasycznej implementacji ze stosemrekordów aktywacji. Wyjaśnij, jaka będzie zawartość stosu po takim wywołaniu i na czym polega problem.
| |
| | |
| == Zadanie - szablony i redukcje ==
| |
| | |
| * Zbuduj szablony dla funkcji main, S, K.
| |
| * Prześledź redukcję funkcji main (obliczenie programu)
| |
| | |
| == Zadanie - G-maszyna ==
| |
| | |
| * Wygeneruj kod dla funkcji main, S, K.
| |
| * Prześledź wykonanie przez G-maszynę kodu dla funkcji main.
| |