我对 Haskell 有点陌生,但这种行为对我来说很奇怪。如果我有一个简单的函数定义如下:
foobar :: Integer -> [Integer] -> Integer
foobar x y = case y of
(a:x:b) -> x
_ -> -1
我基本上期望如果 y 包含至少两个元素并且 y 的第二个元素只是 foobar 的第一个参数,该函数应该评估为 foobar 的第一个参数。否则得到-1。但是在 ghci 中:
foobar 5 [6,7]
给我 7,而不是 -1。
我如何理解这种行为?