0

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

但是,我还没有发现许多其他具有宏系统的语言像具有 Lisp 语法的语言那样复杂和有用。(我不计算 C/C++)

有一些值得注意的例子吗?

4

3 回答 3

2

Dylan也有一个宏系统,并且没有经典的类似 Lisp 的全括号语法。

据称是数学。我自己没有使用过它,尽管根据这个答案,它比 Lisp/Scheme 宏更令人困惑。

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

于 2013-10-18T15:46:54.560 回答
1

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

于 2013-10-18T16:02:18.863 回答
0

我的语言Slate有一个 Lisp 级别的宏系统,但使用 Smalltalk 风格的语法管理它。特别是,我们在默认情况下设法保持卫生(但可以捕获)并且避免 CONS 单元意味着我们的 AST 节点是可以定义代码遍历递归方法的数据类型,这意味着代码遍历和转换比在 Lisp 中容易得多.

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

于 2013-10-18T20:18:18.257 回答