我遇到了以下代码:

lala :: [[Int]] -> Bool
lala b = case b of
   (a:_) | Just (b, _) <- uncons a -> True
   other -> False

虽然我理解该函数检查列表的第一个元素是不是空的(有更好的方法来编写它,但是's not the point), I don't完全理解在case语句中发生的模式匹配 . 在这种情况下左箭头只是模式在 uncons 调用上匹配?这种样式的模式匹配可以嵌套吗?这几乎看起来像是一个列表理解语法,还有其他地方可以使用这种类型的模式匹配吗?