我遇到了以下一段代码:
lala :: [[Int]] -> Bool
lala b = case b of
(a:_) | Just (b, _) <- uncons a -> True
other -> False
虽然我理解该函数检查列表的第一个元素是否为空(有更好的方法来编写它,但这不是重点),我不完全理解case语句中发生的模式匹配。在这种情况下,左箭头是uncons
调用中的模式匹配吗?这种样式的模式匹配可以嵌套吗?这几乎看起来像列表理解语法,还有其他地方可以使用这种类型的模式匹配吗?