Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell case语句中的模式匹配_Haskell_Pattern Matching - Fatal编程技术网

Haskell case语句中的模式匹配

Haskell case语句中的模式匹配,haskell,pattern-matching,Haskell,Pattern Matching,我遇到了以下代码: lala :: [[Int]] -> Bool lala b = case b of (a:_) | Just (b, _) <- uncons a -> True other -> False lala::[[Int]]->Bool lala b=案例b 这是真的 其他->错误 虽然我知道该函数检查列表的第一个元素是否为空(有更好的方法编写它,但这不是重点),但我并不完全理解case语句中发生的模式匹配。在这种情况下,左箭头是否只是u

我遇到了以下代码:

lala :: [[Int]] -> Bool
lala b = case b of
   (a:_) | Just (b, _) <- uncons a -> True
   other -> False
lala::[[Int]]->Bool
lala b=案例b
这是真的
其他->错误

虽然我知道该函数检查列表的第一个元素是否为空(有更好的方法编写它,但这不是重点),但我并不完全理解case语句中发生的模式匹配。在这种情况下,左箭头是否只是
uncon
调用上的模式匹配?这种样式的模式匹配可以嵌套吗?这几乎像是一个列表理解语法,还有其他地方可以使用这种模式匹配吗?

这是一个例子。你说嵌套是什么意思?我发现
Just(b,u)@chi或更好的
Just
中使用了
b
。或者说真的,为什么要引入整个混乱的
uncon
?写一个第一项为非空列表的列表。@amalloy我同意。我想这段代码应该是一个关于如何使用
uncon
和模式保护的示例。如果是这样的话,也许一个更具洞察力的例子会更好。