Ćwiczenie 1.5. Ben Bitdiddle opracował test w celu ustalenia, czy tłumacz, z którym ma do czynienia, używa oceny aplikacyjnej - zlecenia lub oceny normalnego rzędu. Definiuje się następujące dwa procedury:SICP Ćwiczenie 1.5
(określenie (P) (P))
(określenie (test-y) (jeśli (= X 0) y))
Potem ocenia wyrażenie
(test 0 (p))
Jakie zachowanie będzie Ben obserwować z tłumaczem, który używa ocenę aplikacyjnych-order? Jakie zachowanie będzie obserwował przy pomocy interpretera , który wykorzystuje ocenę normalnego rzędu?
Rozumiem odpowiedź na ćwiczenie; moje pytanie dotyczy tego, jak (p) jest interpretowane w porównaniu z p. Na przykład (test 0 (p)) powoduje zawieszenie się tłumacza (co jest oczekiwane), ale (test 0 p) z powyższą definicją natychmiastowo ocenia wartość 0. Dlaczego?
Co więcej, przypuśćmy, że zmieniliśmy definicję na (define (p) p). Przy podanej definicji (test 0 (p)) i (test 0 p) obaj oceniają wartość 0. Dlaczego tak się dzieje? Dlaczego tłumacz nie zwisa? Używam Dr Racket z pakietem SICP.
+1 zwięzła odpowiedź. Spróbuj także http://codepad.org. –
Dzięki. Ja również szukam odpowiedzi. – user1166240