2011-01-03 47 views
11

thể trùng lặp:
How many primitives does it take to build a LISP machine? Ten, seven or five?LISP tối thiểu nhất?

Tôi tò mò. LISP tối thiểu nhất là gì, khi đó tất cả các tính năng khác có thể được xây dựng? Bỏ qua hiệu quả - câu hỏi đơn giản đến từ một nơi sang trọng.

Nếu bạn thức dậy trên một hành tinh xa lạ và được hướng dẫn để xây dựng LISP tối thiểu nhất mà sau này bạn có thể xây dựng dựa trên để thực hiện bất kỳ tính năng mà bạn thích, những gì bạn sẽ bao gồm?

Chỉnh sửa: Làm rõ. Ý định của tôi ở đây không phải là để bắt đầu một cuộc tranh luận, thay vì tôi đang cân nhắc việc triển khai một LISP tối thiểu và tôi muốn hiểu mức tối thiểu tôi có thể đi trong khi vẫn cho phép ngôn ngữ tôi thực hiện hoàn thành. chắc chắn tôi sẽ học những gì tôi muốn học hỏi từ việc quan sát cuộc tranh cãi. :). Cảm ơn!

+0

thế nào là này chủ quan? Nó có thể là một bản sao (tôi nghĩ rằng tôi đã nhìn thấy một câu hỏi tương tự một lần, sẽ đi tìm kiếm ngay bây giờ). – delnan

+1

Tìm thấy: [Cần bao nhiêu nguyên thủy để xây dựng một máy LISP? Mười bảy hay năm?] (Http://stackoverflow.com/questions/3482389/how-many-primitives-does-it-take-to-build-a-lisp-machine-ten-seven-or-five) (Cũng có một liên kết đến một câu hỏi khác cũng chạm vào chủ đề này). – delnan

+0

Bạn có muốn số lượng hoạt động tối thiểu cho ngôn ngữ được hoàn thành hoặc để có thể xác định tất cả các tính năng ngôn ngữ được tìm thấy, ví dụ: trong lisp chung? – sepp2k

Trả lời

4

Peter Norvig thực hiện một thông dịch viên LISP trong 90 dòng Python, và bài viết tiếp theo của mình thảo luận chi tiết những gì bạn đang yêu cầu. Cũng đáng đọc, IMHO.

http://norvig.com/lispy.html

Tôi đã có một cảm giác rằng "trình tự" hình thức đặc biệt của mình có thể được giảm nếu chỉ gọi hàm có thể mất một số tùy ý các thông số.

(defun last (lst) 
    (if (cdr lst) 
     (last (cdr lst)) 
     (car lst))) 

(defun begin (:rest y) (last y)) 

Nhưng điều này sẽ làm phức tạp ứng dụng chức năng.

Các vấn đề liên quan