[PoPL] Lista 8, zadanie 5.41

We have shown how to implement exceptions using a datastructure
representation of continuations. We can’t immediately apply the recipe of
section 2.2.3 to get a procedural representation, because we now have two observers:
apply-handler and apply-cont. Implement the continuations of this section as a
pair of procedures: a one-argument procedure representing the action of the continuation
under apply-cont, and a zero-argument procedure representing its action
under apply-handler.

Czy komuś udało się zrobić to zadanie? W szczególności tak, żeby druga z procedur (ta zastępująca apply-handler) miała rzeczywiście zero argumentów?

W zadanym przez nas języku, raise <exp> oblicza wartość, która potem jest przekazana do bloku “catch” i inicjalizowana jako zmienna, więc nie bardzo rozumiem jak można ominąć przekazywanie tej wartości właśnie jako argument do procedury zastępującej apply-handler.

Wydaje mi się, że nie da się zaimplementować handlera jako procedury bez argumentów, ja przekazuję jej jedną wartość.

1 polubienie