【问题标题】:What is the dot pipe ".|" operator in Haskell?什么是点管道“。|” Haskell 中的运算符?
【发布时间】:2016-12-03 23:17:18
【问题描述】:

我理解“。” (点)作为函数组合。我明白了“|” (管道)作为“或”保护介绍语法(来自 here ),但我 saw an answer on http-conduits using ".|" 以我不理解的方式使用此运算符。

我找到的其他管道参考,例如:

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

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

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

【问题讨论】:

    标签: haskell conduit http-conduit


    【解决方案1】:

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

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

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

    【讨论】:

    • Stackage Hoogle 也是一个不错的选择——它默认提供比 haskell.org 更广泛的包。
    • 谢谢,@Alec。如果你继续放纵我,我建议我们继续这些,直到我们的 stackoverflow Q&A 会议克服了旧版本中所有过时和弃用的语法和策略,以及互联网上其他地方可用的实现,这些成为引导人们规范的热门话题正确的文档。 :)
    • 似乎他们最好将操作员称为“管道”:/
    • 嗯,一个好的开始:一小时后,这已经是“dot pipe haskell”的谷歌搜索结果了迈克尔·斯诺伊曼(Michael Snoyman)在此答案中声明的此语法。
    【解决方案2】:

    .|Conduit 库引入,是fuse 的同义词。

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

    fuse 用于组合conduits,就像. 运算符用于组合函数一样。 最后,.| 是一种新语法,用于替换 $==$=$=,它们本来就是同义词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-18
      • 2012-12-27
      • 2014-09-08
      • 2021-07-11
      • 2018-09-14
      • 2011-02-19
      • 2016-12-21
      • 2010-11-30
      相关资源
      最近更新 更多