haskell - 为什么给 Haskell 添加宏比给 Scheme 更难

标签 haskell functional-programming macros scheme

显然,向 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/

相关文章:

for循环中的C预处理器串联

json - Haskell 导管 Aeson : Parsing Large JSONs and filter matching key/values

haskell - 我可以检查 Haskell 如何分配内存吗?

.net - 在 VB 和 C# 中使用 Action/Func/Delegates/Lambda 编写扩展方法

javascript - 这些线在做什么?

Vim 宏 : Incrementing numbers on non-consecutive lines

objective-c - Objective C MAX 宏错误

haskell - 多参数类型类和非法实例声明

algorithm - Haskell中的树合并算法

regex - 正则表达式 Go lang 错误