显然,向 Haskell 添加宏比 Scheme 更难。
我对函数式编程中的宏到底是什么感到非常困惑,但根据我对 C 语言的理解,是代码在预处理时改变了“代码”,而不是程序本身。
这是否与 Haskell 是纯粹的事实有关,因此更难更改功能代码?
这与懒惰评估有关吗?
最佳答案
相反,这当然与 Haskell 的纯粹或懒惰无关。
宏在 Haskell 中不常见的主要原因是它是一种静态的编译语言,因此无论如何都不可能在运行时更改代码。此外,它的语法不像 Lisp 那样简单,因此编写编译时宏总是比较麻烦。
http://hackage.haskell.org/package/template-haskell-2.12.0.0/docs/Language-Haskell-TH.html#t:Exp
Haskell 的惰性求值及其强类型系统的抽象能力意味着在 Scheme 程序员会使用它们的许多情况下您根本不需要宏。基本上,您可以对计算本身的概念进行抽象,这很像宏(如果您问我,那就更酷了……)。
关于haskell - 为什么给 Haskell 添加宏比给 Scheme 更难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171938/