6

我明白 ”。” (点)作为函数组合。我明白了“|” (管道)作为“或”保护介绍语法(从这里 ),但我看到一个使用“。|”的http-conduits的答案 以我不理解的方式使用此运算符。

我发现的其他管道参考资料,例如:

...建议使用 "$$"、"$="、"=$="、"=$" 等语法来组合数据流中的管道。

我应该怎么称呼这个“。|” 这个运算符以及它是如何工作的?

可以预见的是,谷歌搜索“.| haskell”或“'dot pipe' haskell”或“'dot pipe' haskell operator channels”并不是很成功。

4

2 回答 2

9

这只是conduit用于融合的(最近的)新语法。不久前,作者写了一篇关于此的博客文章。引用这篇文章,他提议(并最终这样做)

$==$=$=运算符(它们都是彼此的同义词)替换为.|运算符。这借用了 Unix shell 的直觉,其中管道运算符表示从一个进程到另一个进程的管道数据。这个类比非常适合管道,那么为什么不借用它呢?(我们称所有这些运算符为“融合”。)

顺便说一句,如果您需要查找运营商,HayoHoogle 是您可以去的地方。还有Stackage Hoogle(感谢@duplode),它可以让您查找特定解析器的运算符(这在此处特别有用,因为这是最近的更改)。

于 2016-12-03T23:21:25.163 回答
1

.|Conduit库引入,是fuse.

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

fuse用于组合conduits 的方式与.运算符用于组合函数的方式相同。最后,.|是一个新的语法来替换$=,=$=$=, 无论如何都是同义词。

于 2016-12-04T00:02:11.117 回答