小编lin*_*nse的帖子

Haskell元组与函数参数不匹配

我是Haskell的新手,所以它可能是显而易见的,但我做了广泛的Prolog,所以我对这一个感到困惑......

使用GHCi时,我创建了以下函数(1):

Prelude> let find k t = head [v | (k',v) <- t, k == k'] -- Definiton of find
find :: Eq a1 => a1 -> [(a1, a)] -> a

Prelude> find 2 [(1,11),(2,22)] -- Invocation of find
22
Run Code Online (Sandbox Code Playgroud)

这是预期的.然后我尝试从定义中删除k':

Prelude> let find2 k t = head [v | (k,v) <- t]
find2 :: t -> [(t1, a)] -> a

Prelude> find2 2 [(1,11),(2,22)]
11
Run Code Online (Sandbox Code Playgroud)

然后我很惊讶地发现这个价值2与之相符1.为了确保我不希望不可能,我也尝试以下内容以确认在Haskell中可以进行部分匹配,看起来实际情况如下:

Prelude> head [v | (2,v) <- [(1,11),(2,22)]]
22 …
Run Code Online (Sandbox Code Playgroud)

haskell pattern-matching ghci winghci

2
推荐指数
1
解决办法
172
查看次数

标签 统计

ghci ×1

haskell ×1

pattern-matching ×1

winghci ×1