2010-11-09 31 views
15

Lisp gốc của McCarthy và một số hóa thân sau đó không có cơ sở vĩ mô như bây giờ chúng ta có trong Common Lisp, Clojure, Scheme, vv ... Điều này tôi biết.Lisp đầu tiên với macro?

Tuy nhiên, tôi không rõ chính xác các macro sẽ như thế nào, trước tiên chúng triển khai thực hiện gì và điều gì đã thúc đẩy chúng. Tài liệu tham khảo cho các giấy tờ và nguồn sẽ là lý tưởng nếu bạn vui lòng.

Trả lời

12

Từ The Evolution of Lisp (PDF):

Macros dường như đã được đưa vào Lisp bởi Timothy P. Hart vào năm 1963 trong một bản ghi nhớ MIT AI ngắn [Hart, 1963]

Xem:

AIM-57 Tác giả [s]: Timothy P. Hart

Định nghĩa MACRO cho LISP

tháng 10 năm 1963

ftp://publications.ai.mit.edu/ai-publications/0-499/AIM-057.ps

ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-057.pdf

Trong LISP 1.5 đặc biệt các hình thức được sử dụng cho ba purp riêng biệt về mặt logic :: a) để đạt được điểm, b) để cho phép các hàm có số vô hạn đối số và c) để giữ đối số không bị đánh giá. Các phiên dịch viên LISP mới có thể dễ dàng đáp ứng nhu cầu (a) bằng cách làm cho một loại thực thể đặc biệt loại hoặc APVAL. Sử dụng (b) và (c) có thể được thay thế bằng cách kết hợp hướng dẫn mở rộng MACRO trong định nghĩa. Tôi đang đề xuất một người mở rộng như vậy.

+0

Cảm ơn bạn đã liên kết. Tôi mong được đào sâu vào cuối tuần này. – fogus

9

John Shutt's PhD thesis phần đầu tiên liên quan đến lịch sử của lisps, bao gồm cả việc giới thiệu các macro, tôi tin. Nó không hoàn toàn rõ ràng đối với tôi khi đọc, nhưng có vẻ như ông tuyên bố rằng các macro được xác định nhiều hơn hoặc ít hơn với một phong trào "ngôn ngữ có thể mở rộng" (độc lập với lisp), và tài liệu MD McIlroy năm 1960, "Macro Extension Instructions của trình biên dịch ngôn ngữ", là nền tảng cho phong trào ngôn ngữ mở rộng ... ngụ ý rằng các macro đã được giới thiệu đến các tài liệu học tập vào năm 1960.

+3

Hmmm. Tôi ước có một cách để đánh dấu nhiều câu trả lời là "câu trả lời". :-( – fogus

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