Haskell 哈斯克尔的严肃口音
我是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 -} 反引号用于
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节)。