【发布时间】:2015-04-27 03:46:23
【问题描述】:
我遇到了一个我不太明白的问题。我以为我可以在 Haskell 中编写这样的代码:
foo :: Maybe Int -> Int
foo Nothing = 0
foo Just x = x
但是当我尝试编译它时,我得到了错误:
'foo' 的方程有不同数量的参数
我可以通过将我的代码更改为以下内容来修复它:
foo :: Maybe Int -> Int
foo Nothing = 0
foo (Just x) = x
这让我觉得 GHC 将 Just 解释为 foo 的参数。但是 Haskell 禁止使用大写字母来开始变量名,所以我认为这里不应该有任何歧义。怎么回事?
【问题讨论】:
-
不完全确定,但
Just是否被视为Nothing,即作为没有任何参数的构造函数?这可以解释问题。