我正在阅读learnyouahaskell.com上的指南。一句话提到“哪里”可以在全球范围内分享,但没有给出任何例子,那么我在哪里可以找到一些细节呢?
“不在不同模式的函数体之间共享绑定。如果您希望一个函数的多个模式访问某个共享名称,则必须全局定义它。”
答案 0 :(得分:10)
来自Chapter 4: Syntax in Functions:
where
绑定不在不同模式的函数体之间共享。如果您希望一个函数的多个模式访问某个共享名称,则必须全局定义它。
以下是插图:
f (Left x) = double x
f (Right x) = double x
where
double x = 2 * x
函数f
包含每个模式(Left x)
和(Right x)
的正文。 double
的绑定不在函数体之间共享,因此这段代码不是有效的Haskell。
如果我们想要从两个函数体中访问double
,我们必须将其从where
子句中移出:
double x = 2 * x
f (Left x) = double x
f (Right x) = double x
这就是所引用的段落的含义。
答案 1 :(得分:7)
我认为他们意味着您必须全局定义新的功能,而不是 。