У меня ограниченные знания Lisp (я стараюсь немного поучиться в свободное время), но насколько я понимаю, макросы Lisp позволяют вводить новые языковые конструкции и синтаксис, описывая их в самом Lisp. Это означает, что новая конструкция может быть добавлена в виде библиотеки без изменения компилятора / интерпретатора Lisp.
Этот подход сильно отличается от других языков программирования. Например, если бы я хотел расширить Паскаль с помощью нового вида цикла или какой-то конкретной идиомы, мне пришлось бы расширить синтаксис и семантику языка и затем реализовать эту новую функцию в компиляторе.
Существуют ли другие языки программирования за пределами семейства Lisp (например, кроме Common Lisp, Scheme, Clojure (?), Racket (?) И т. Д.), Которые предлагают аналогичную возможность расширения языка внутри самого языка?
РЕДАКТИРОВАТЬ
Пожалуйста, избегайте расширенного обсуждения и будьте конкретны в своих ответах. Вместо длинного списка языков программирования, которые могут быть так или иначе расширены, я хотел бы понять с концептуальной точки зрения, что является специфическим для макросов Lisp как механизма расширения, и какие языки программирования, не относящиеся к Lisp, предлагают некоторую концепцию это близко к ним.