该摘录来自LYAH:
instance (Eq m) => Eq (Maybe m) where
Just x == Just y = x == y
Nothing == Nothing = True
_ == _ = False
对于
x
和y
应该是什么,我完全感到困惑,因为它们在任何地方都没有定义。谁能帮我理解这一点? 最佳答案
好吧,==
是一个中缀函数,您可以将其作为匹配以下内容的模式来阅读:
(==) (Just x) (Just y)
在这种情况下,很明显
x
和y
是模式匹配中的功能参数。一个更简单的示例可以显示为(没有类型类):
areBothFive:: Int -> Int -> Bool
5 `areBothFive` 5 = True
x `areBothFive` y = False -- the x and y are variables in the pattern match here
areBothFive 5 5 -- true
areBothFive 4 5 -- false
这是a fiddle illustrating the issue。
LYAH在“函数语法”一章中给出了使用此语法的示例。