该摘录来自LYAH:

instance (Eq m) => Eq (Maybe m) where     

Just x == Just y = x == y      
Nothing == Nothing = True     
 _ == _ = False


对于xy应该是什么,我完全感到困惑,因为它们在任何地方都没有定义。谁能帮我理解这一点?

最佳答案

好吧,==是一个中缀函数,您可以将其作为匹配以下内容的模式来阅读:

(==) (Just x) (Just y)


在这种情况下,很明显xy是模式匹配中的功能参数。

一个更简单的示例可以显示为(没有类型类):

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在“函数语法”一章中给出了使用此语法的示例。

08-26 15:09