非Lisp语言中有哪些宏系统?

时间:2013-10-18 15:06:33

标签: syntax macros programming-languages lisp syntactic-sugar

我使用过Scheme和Clojure,我用他们的宏系统和lisp语法(缺乏语法)可能性玩了很多。

但是我没有发现许多其他语言的宏系统与使用Lisp语法的语言一样复杂和有用。(我不算C / C ++)

是否有一些值得注意的例子?

3 个答案:

答案 0 :(得分:2)

Dylan也有a macro system,并且没有经典的类Lisp,完全括号的语法。

据称是Mathematica。我自己没有使用它,但根据this answer,它比Lisp / Scheme宏更令人困惑。

根据您定义“宏系统”的方式,Template Haskell也可能会计算在内。

答案 1 :(得分:1)

具有宏的Algol dialects(元编程功能)我可以想到NemerlePerl6。这意味着在Algol方言中拥有强大的宏并非不可能,但与任何LISP方言相比,它总是非常困难,因为Algol语法很少像LISP方言那样类似于它自己的AST树。

答案 2 :(得分:0)

我的语言Slate在Lisp的级别上有一个宏系统,但使用Smalltalk样式的语法进行管理。特别是,我们默认设置为卫生(但可以捕获),避免CONS单元意味着我们的AST节点是可以定义代码行走递归方法的数据类型,这意味着代码行走和转换比在Lisp中更容易

但是,许多较新的语言(我打算评估Rust和Julia)都有某种形式的语法宏,因此会有更多的例子可供选择。