Bài tập 1.5. Ben Bitdiddle đã phát minh ra một thử nghiệm để xác định xem liệu thông dịch viên mà anh ta đang phải đối mặt có đang sử dụng đánh giá theo đơn đặt hàng hoặc đánh giá thông thường. Ông xác định sau hai thủ tục:Bài tập SICP 1.5
(define (p) (p))
(xác định (kiểm tra xy) (if (= x 0) y))
Sau đó, ông đánh giá biểu thức
(thử nghiệm 0 (p))
hành vi gì Ben sẽ quan sát với một thông dịch viên có sử dụng đánh giá applicative đặt hàng? Anh ta sẽ quan sát hành vi nào với thông dịch viên sử dụng đánh giá theo thứ tự bình thường?
Tôi hiểu câu trả lời cho bài tập; câu hỏi của tôi nằm ở cách (p) được diễn giải so với p. Ví dụ, (test 0 (p)) làm cho thông dịch viên bị treo (dự kiến), nhưng (test 0 p) với định nghĩa trên ngay lập tức đánh giá là 0. Tại sao?
Hơn nữa, giả sử chúng tôi đã thay đổi định nghĩa thành (define (p) p). Với định nghĩa đã cho, (kiểm tra 0 (p)) và (kiểm tra 0 p) cả hai đánh giá là 0. Tại sao điều này xảy ra? Tại sao người phiên dịch không treo? Tôi đang sử dụng Dr Racket với gói SICP.
+1 câu trả lời ngắn gọn. Ngoài ra, hãy thử http://codepad.org. –
Cảm ơn. Tôi cũng đang tìm câu trả lời. – user1166240