Haskell 哈斯克尔的严肃口音

Haskell 哈斯克尔的严肃口音,haskell,syntax,semantics,Haskell,Syntax,Semantics,我是Haskell编程新手。我试图理解这种语言的语法和语义。我对严肃口音的语义有点好奇。 当我们使用严肃的口音时,为什么这段代码有效 elem' :: (Eq a) => a -> [a] -> Bool elem' a [] = False elem' a (x:xs) | a == x = True | otherwise = a `elem'` xs {-grave accent used in this line -} 反引号用于

我是Haskell编程新手。我试图理解这种语言的语法和语义。我对严肃口音的语义有点好奇。 当我们使用严肃的口音时,为什么这段代码有效

elem' :: (Eq a) => a -> [a] -> Bool  
elem' a [] = False  
elem' a (x:xs)  
    | a == x    = True  
    | otherwise = a `elem'` xs {-grave accent used in this line -}

反引号用于将任何二进制函数视为中缀运算符

a `elem'` xs
与相同

elem' a xs
3 + 5
将二进制运算符用作函数是对
(+)
使用的补充:

(+) 3 5
与相同

elem' a xs
3 + 5

参考Haskell报告(1998年和2010年)的第3.2节:运算符可以是运算符符号,如+或$$,也可以是用严重重音(反引号)括起来的普通标识符,如'op
。例如,可以编写中缀应用程序x
op`y,而不是编写前缀应用程序op x y。如果没有为'op'给出固定性声明,则默认为最高优先级和左结合性(见第4.4.2节)。