Saya hanya memiliki pengetahuan terbatas tentang Lisp (mencoba belajar sedikit di waktu luang saya) tetapi sejauh yang saya mengerti Lisp macro memungkinkan untuk memperkenalkan konstruksi bahasa baru dan sintaksis dengan menggambarkannya dalam Lisp itu sendiri. Ini berarti bahwa konstruk baru dapat ditambahkan sebagai pustaka, tanpa mengubah kompiler / interpreter Lisp.
Pendekatan ini sangat berbeda dengan bahasa pemrograman lainnya. Misalnya, jika saya ingin memperluas Pascal dengan jenis loop baru atau idiom tertentu saya harus memperluas sintaks dan semantik bahasa dan kemudian mengimplementasikan fitur baru itu di kompiler.
Apakah ada bahasa pemrograman lain di luar keluarga Lisp (yaitu selain Common Lisp, Scheme, Clojure (?), Racket (?), Dll) yang menawarkan kemungkinan serupa untuk memperluas bahasa dalam bahasa itu sendiri?
EDIT
Harap, hindari diskusi yang panjang dan spesifik dalam jawaban Anda. Alih-alih daftar panjang bahasa pemrograman yang dapat diperluas dengan cara tertentu, saya ingin memahami dari sudut pandang konseptual apa yang spesifik untuk makro Lisp sebagai mekanisme ekstensi, dan bahasa pemrograman non-Lisp yang menawarkan beberapa konsep itu dekat dengan mereka.