【发布时间】:2012-12-29 02:20:00
【问题描述】:
我是 Haskell 的新手。鉴于 Haskell 的整个前提是函数将始终返回相同的值,我希望有某种方式,例如在编译时计算常量的斐波那契值,就像我可以在 C++ 中使用模板元编程一样,但我不知道该怎么做。有什么办法吗?
【问题讨论】:
-
Template Haskell,也许?它甚至比 C++ 中的模板元编程更糟糕,尽管这并不能说明什么。两者都不是很有趣。 :P
-
@C.A.McCann 它是否适用于 fib?我的理解是 TH 更像是 C 宏,但这可能是完全错误的。 (也就是说,模板 C++ 只是一种美化的宏,嗯,我想有可能在编译时通过宏在 C 中定义 fibs,不确定......)无论如何,具体的例子会有所帮助。
-
TH 是任意的 Haskell 代码,在编译时执行,它可以生成语法树以将定义、表达式或任何其他内容拼接到代码中。 C 宏甚至还没有开始比较。它远没有 C++ 模板垃圾那么有限,因为使用 AST 数据类型很笨拙,所以使用它只是一种痛苦。
-
我发现如果 Lisp 有实际语法,它与 Lisp 宏的感觉非常相似