Gre*_*ory 2 macros scheme haskell functional-programming
显然,向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程序员使用它们的许多情况下根本不需要宏.基本上,你可以抽象出计算本身的概念,这很像宏(如果你问我的话,那就更酷了).