jiy*_*ong 4 haskell global where
我正在阅读learnyouahaskell.com上的指南.一句话提到"哪里"可以在全球范围内共享,但没有给出一个例子,那么在哪里可以找到一些细节呢?
"不在不同模式的函数体之间共享绑定.如果你想要一个函数的几个模式来访问某个共享名,你必须全局定义它."
ant*_*kos 10
where不在不同模式的函数体之间共享绑定.如果您希望一个函数的多个模式访问某个共享名称,则必须全局定义它.
这是一个例子:
f (Left x) = double x
f (Right x) = double x
where
double x = 2 * x
Run Code Online (Sandbox Code Playgroud)
该函数f具有每个模式的主体(Left x)和(Right x).绑定double不在函数体之间共享,因此该代码不是有效的Haskell.
如果我们想要double从两个函数体访问,我们必须将它移出where子句:
double x = 2 * x
f (Left x) = double x
f (Right x) = double x
Run Code Online (Sandbox Code Playgroud)
这就是所引用段落的意思.