运算符%在Haskell中是什么意思?
我想知道Haskell运算符%的作用。这在谷歌上很难找到,我在哈斯克尔报告中也找不到 我在这段代码中看到了它的用法:运算符%在Haskell中是什么意思?,haskell,operators,Haskell,Operators,我想知道Haskell运算符%的作用。这在谷歌上很难找到,我在哈斯克尔报告中也找不到 我在这段代码中看到了它的用法: fi=zz.bu bu=zz.(:).(++"zz") []#zz=zz;zz#__=zz zZ%zz=zZ zz$zZ%zz zz=(([[],[]]++).) zZ=zipWith;z=zZ((#).show)[1..]$zZ(++)(bu%"Fi")(fi%"Bu") 摘自:通常,我们可以定义一个新函数foo,如下所示: foo a b c = (someth
fi=zz.bu
bu=zz.(:).(++"zz")
[]#zz=zz;zz#__=zz
zZ%zz=zZ zz$zZ%zz
zz=(([[],[]]++).)
zZ=zipWith;z=zZ((#).show)[1..]$zZ(++)(bu%"Fi")(fi%"Bu")
摘自:通常,我们可以定义一个新函数
foo
,如下所示:
foo a b c = (something involving a, b, and c)
类似地,我们可以定义二进制运算符%
(由任何符号字符组合构成),如下所示:
以下是哈斯克尔报告的主要内容:
Haskell提供了支持中缀符号的特殊语法。运算符是一种可以使用中缀语法(第3.4节)应用的函数,或使用第3.5节(第3.5节)部分应用的函数
运算符可以是运算符符号,如+
或$$
,也可以是包含在严重重音(反引号)中的普通标识符,如“op”。例如,可以编写中缀应用程序x`op`y
,而不是编写前缀应用程序op`y
。如果没有为`op`
提供固定性声明,则默认为最高优先级和左关联性(参见第4.4.2节)
同样,通过将运算符符号括在括号中,可以将其转换为普通标识符。例如,(+)xy
相当于x+y
,foldr(*)1xs
相当于foldr(\x y->x*y)1xs
也就是说,Haskell中的“操作符”除了语法之外没有什么特别之处。名称由符号构成的函数默认为中缀,名称为字母数字的函数默认为前缀,两者都可以在另一种样式中使用,但需要一些额外的语法
顺便说一句,由于通常无法使用谷歌搜索基于运营商名称的运营商,要查找标准库中声明的运营商,有两个专门用于on-Hackage的运营商。它不是内置的-代码将其定义为
zZ%zZ=zZ-zZ$zZ%zZ
,并且它的类型为(t->t1->t1)->t->t1
我可以自己这样定义它,例如:a%b=a+b?酷
a % b = (something involving a and b)