check :: [a] -> String
check [] = "Empty"
check (x:xs) = "Contains Elements"
使用 guards 的函数
check_ :: [a] -> String
check_ lst
| length lst < 1 = "Empty"
| otherwise = "Contains elements"
在我看来,模式匹配和Guard实际上是相同的。两者都会评估一个条件,如果为真,则执行与之相关联的表达式。我的理解正确吗?
在这个例子中,我可以使用模式匹配或guard来得到相同的结果。但是我感觉我错过了一些重要的东西。我们总是可以用一个替换另一个吗?
能否给出一些示例,说明何时更喜欢使用模式匹配而不是guard,反之亦然?