Haskell 函数中的非详尽模式

2024-01-02

我的 haskell 程序有问题。我想做这样的事情:

main = do
    print $ map foo [(1, [(2, 3), (4,5)])]

foo :: (Int, [(Int, Int)]) -> (Int, [(Int, Int)])
foo (a, [(b, c)]) = (a+1, [(b, c)])

然后我得到运行时错误:

Non-exhaustive patterns in function Main.foo

怎么可能做出这样的动作呢? 我只想访问不在列表中的参数。


(a, [(b, c)])不匹配(1, [(2, 3), (4, 5)]),因为后者中的列表有两个元素,而您的模式要求只有一个元素。

如果您想保持列表不变,请使用以下模式:

foo (a, bar) = (a+1, bar)

Now bar将匹配[(2, 3), (4, 5)]因为它只是一个可以匹配任何正确类型的绑定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haskell 函数中的非详尽模式 的相关文章

随机推荐