Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运算符%在Haskell中是什么意思?_Haskell_Operators - Fatal编程技术网

运算符%在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

我想知道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 = (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)