我想了解部分,并认为我已经得到它.基本上,它是将部分应用程序应用于二元运算符的一种方法.所以,我理解所有的(2*),(+1)等等的例子就好了.
但是在O'Reilly Real World Haskell的书中,章节'部分':)它有这个例子:
(`elem` ['a'..'z']) 'f'
>True
Run Code Online (Sandbox Code Playgroud)
我理解括号的必要性 - 即节语法.但为什么我需要反引号呢?
如果我尝试,我得到:
(elem ['a'..'z']) 'f'
<interactive>:220:19:
Couldn't match expected type `[[Char]]' with actual type `Char'
In the second argument of `elem', namely 'f'
In the expression: (elem ['a' .. 'z']) 'f'
In an equation for `it': it = (elem ['a' .. 'z']) 'f'
Run Code Online (Sandbox Code Playgroud)
ken*_*ytm 39
在Haskell中,反引号将名称转换为中缀运算符:
a `elem` b = elem a b
Run Code Online (Sandbox Code Playgroud)
所以
(`elem` b) a = (\x -> x `elem` b) a
= a `elem` b
= elem a b
Run Code Online (Sandbox Code Playgroud)
而
(elem b) a = elem b a
Run Code Online (Sandbox Code Playgroud)