我的 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(使用前将#替换为@)