簡體   English   中英

運算符%在Haskell中意味着什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM