Jas*_*ker 23 lisp macros scheme common-lisp
为什么有人会更喜欢Scheme宏而不是Common Lisp宏(我真的也想知道,我不是想成为一个巨魔)?
我作为Lisp newb的经验是,Common Lisp风格的宏比Scheme的宏更容易学习.我还没有看到Scheme的宏有任何优点,但当然这并不意味着它们不存在.
我知道Scheme宏是"hygenic",但我仍然不相信这是值得的额外复杂性.在另一方面,虽然,有很明显的人是相信,这是必要的,否则就不会有Common Lisp中的宏方案的实现.
长话短说,有人可以向我捍卫Scheme的宏吗?
因为它们使用不同的非Scheme语言,所以Scheme几乎不像Common Lisp宏那样强大:你可以用它们进行任意的编译时计算,但是它很毛茸茸且复杂.这与不使用的论点非常相似set!:功能较弱的set!免费语言产生的错误代码较少,以换取状态的笨拙处理.每当你为纪律交易权力时,你都认为从长远来看你将能够构建更复杂的系统.
这是我在Scheme Lisp上看到的最好的参数:如果你在Scheme之上构建一个复杂的语言,如果你坚持使用标准宏系统,你就不太可能引入微妙的宏bug.
就个人而言,我不使用宏构建大型语言,所以我更喜欢Common Lisp宏.我发现它们对于小型工作更容易,并且避免变量捕获等在小范围内并不是一件大事.