我使用过 Scheme 和 Clojure,我在他们的宏系统和 lisp 语法(缺少语法)可能性方面玩了很多。
但是,我还没有发现许多其他具有宏系统的语言像具有 Lisp 语法的语言那样复杂和有用。(我不计算 C/C++)
有一些值得注意的例子吗?
我使用过 Scheme 和 Clojure,我在他们的宏系统和 lisp 语法(缺少语法)可能性方面玩了很多。
但是,我还没有发现许多其他具有宏系统的语言像具有 Lisp 语法的语言那样复杂和有用。(我不计算 C/C++)
有一些值得注意的例子吗?
Dylan也有一个宏系统,并且没有经典的类似 Lisp 的全括号语法。
据称是数学。我自己没有使用过它,尽管根据这个答案,它比 Lisp/Scheme 宏更令人困惑。
根据您定义“宏系统”的方式,Template Haskell也可能算在内。
我的语言Slate有一个 Lisp 级别的宏系统,但使用 Smalltalk 风格的语法管理它。特别是,我们在默认情况下设法保持卫生(但可以捕获)并且避免 CONS 单元意味着我们的 AST 节点是可以定义代码遍历递归方法的数据类型,这意味着代码遍历和转换比在 Lisp 中容易得多.
但是,很多较新的语言(我打算评估 Rust 和 Julia)都有某种形式的语法宏,所以会有更多的例子可供选择。