Tôi chỉ có kiến thức hạn chế về Lisp (cố gắng học một chút trong thời gian rảnh) nhưng theo tôi hiểu thì macro Lisp cho phép giới thiệu các cấu trúc và cú pháp ngôn ngữ mới bằng cách mô tả chúng trong chính Lisp. Điều này có nghĩa là một cấu trúc mới có thể được thêm vào như một thư viện, mà không thay đổi trình biên dịch / trình thông dịch Lisp.
Cách tiếp cận này rất khác với các ngôn ngữ lập trình khác. Ví dụ, nếu tôi muốn mở rộng Pascal bằng một loại vòng lặp mới hoặc một số thành ngữ cụ thể, tôi sẽ phải mở rộng cú pháp và ngữ nghĩa của ngôn ngữ và sau đó triển khai tính năng mới đó trong trình biên dịch.
Có ngôn ngữ lập trình nào khác ngoài họ Lisp (tức là ngoài Common Lisp, Scheme, Clojure (?), Vợt (?), V.v.) cung cấp khả năng tương tự để mở rộng ngôn ngữ trong chính ngôn ngữ đó không?
CHỈNH SỬA
Xin vui lòng, tránh thảo luận mở rộng và được cụ thể trong câu trả lời của bạn. Thay vì một danh sách dài các ngôn ngữ lập trình có thể được mở rộng bằng cách này hay cách khác, tôi muốn hiểu theo quan điểm khái niệm, cái gì đặc trưng cho các macro Lisp như một cơ chế mở rộng và các ngôn ngữ lập trình không Lisp cung cấp một số khái niệm đó là gần với họ.