[英]What does operator % mean in Haskell?
我想知道Haskell運算符%的作用。 在谷歌很難找到,我也無法在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")
取自: https : //codegolf.stackexchange.com/questions/88/obfuscated-fizzbuzz-golf/110#110
以下是Haskell報告的相關部分 :
Haskell提供了特殊的語法來支持中綴表示法。 運算符是一個函數,可以使用中綴語法(第3.4節)應用,或部分應用於節(第3.5節)。
運算符是運算符符號,例如
+
或$$
,或者是用重寫符(反引號)括起來的普通標識符,例如`op`。 例如,不是編寫前綴應用程序op xy
,而是可以編寫中綴應用程序x `op` y
。 如果沒有為`op`
給出固定聲明,那么它默認為最高優先級和左關聯性(參見第4.4.2節)。通過將操作符號括在括號中,可以將其轉換為普通標識符。 例如,
(+) xy
相當於x + y
,而foldr (*) 1 xs
相當於foldr (\\xy -> x * y) 1 xs
。
也就是說,除了語法之外,Haskell中的“運算符”沒有什么特別之處。 名稱由符號組成的函數默認為infix,名稱為字母數字的函數默認為prefix,並且可以在其他樣式中使用一些額外語法。
順便說一句,由於通常不可能使用Google進行基於運營商名稱的搜索,因此要查找標准庫中聲明的運算符,有兩個專門用於在Hackage上查找內容的 搜索引擎 。
一般來說,我們可以像這樣定義一個新的函數foo
:
foo a b c = (something involving a, b, and c)
類似地,我們可以定義一個二元運算符%
(由符號字符的任意組合構成),如下所示:
a % b = (something involving a and b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.