我对haskell很新,但如果你做一个if语句:
function a b c
| (a+b == 0) = True
| --etc.
| otherwise = False
Run Code Online (Sandbox Code Playgroud)
如果在其他语言中,第二个if语句与else相同,或者只是另一个if语句.我假设它是前者,因为你只能有一个输出,但我只是想确定.
您使用的构造称为警卫.Haskell一个接一个地检查给定的替代方案,直到一个条件产生True.然后它评估该等式的右侧.
你可以写得很好
function n
| n == 1 = ...
| n == 2 = ...
| n >= 3 = ...
Run Code Online (Sandbox Code Playgroud)
因此,guard类代表来自其他语言的if/elseif结构.由于otherwise被简单地定义为True,最后
| otherwise =
Run Code Online (Sandbox Code Playgroud)
将永远是真实的,因此代表了一个包罗万象的else条款.
尽管如此,Haskell还是有一个通常的a = if foo then 23 else 42说法.