2016-12-03 26 views
6

我明白「。」 (點)作爲功能組成。我明白「|」 (管道)作爲「或」,警衛介紹語法(從here),但我saw an answer on http-conduits using ".|",使用這個操作符以我不明白的方式。什麼是點管「。」 Haskell中的運算符?

我已經找到了管道的其他參考資料,如:

...建議語法,如 「$$」, 「$ =」,「 = $ =「,」= $「用於在數據流中組合導管。

我該怎麼稱呼這個「。」這個操作員,它是如何工作的?

可以預計,使用「。| haskell」或「'點管'haskell'或''點管'haskell操作員管道」的搜索功能並不是非常成功。

回答

9

這只是conduit用於融合的(最近的)新語法。作者在不久前寫了一篇關於這個的文章blog-post。從發佈到引用,他提出了(最終這樣做),以

更換$==$=$=運營商 - 與.|運營商 - 這是其他每個 的所有同義詞。這借用了來自Unix的直覺,其中管道操作員表示從一個進程到另一個進程的管道數據到 。這個比喻對於管道來說確實很好,所以爲什麼不借用 呢?撇開(我們稱這些運營商的「融合」。)

作爲,如果你需要查找運營商,HayooHoogle是去的地方。還有Stackage Hoogle(謝謝@duplode),它可以讓你查找特定解析器的運算符(由於這是最近的變化,所以在這裏特別有用)。

+3

[Stackage Hoogle](https://www.stackage.org/lts-7.11/hoogle?q=.%7C)也是一個不錯的選擇 - 它默認比haskell.org更廣泛的軟件包一。 – duplode

+1

謝謝,@Alec。如果你會繼續放縱我,我建議我們繼續這些,直到我們的stackoverflow問答環節克服在舊版本和互聯網上其他地方提供的所有過時和不推薦的語法和策略,並且這些成爲頂級命中,正確的文件。:) – Mittenchops

+0

似乎他們會更好地稱呼操作員「管道」:/ – jberryman

1

.|Conduit庫引入,是fuse的同義詞。

fuse 
    :: Monad m => Conduit a m b -> ConduitM b c m r -> ConduitM a c m r 

fuse被用於conduit S中的相同方式組成.運算符用於功能的組合物。 最後,.|是替代$=,=$=$=的新語法,無論如何它們都是同義詞。