语法$$在Haskell中的含义是什么?

Toy*_*rii 17 syntax haskell

"呃,"你可能会想......"另一个语法问题,这里让我谷歌那个为你而努力." 可惜!我用Google搜索了,我仍然难过!

在yesod博客的代码中找到

import System.IO
import Data.Enumerator
import Data.Enumerator.Binary

main =
    withFile "output.txt" WriteMode $ \output ->
    run_ $ enumFile "input.txt" $$ iterHandle output 
Run Code Online (Sandbox Code Playgroud)

然而,"$$"运算符对我来说是新的.Haskell 2010报告仅提及它一次作为运营商符号.它有什么作用?

Hei*_*mus 20

在Haskell中,类似$$的运算符不是语法的一部分,它们是用户可定义的函数.因此,您需要查找Yesod 的API文档以查看它是什么$$.特别是,此处$$记录示例中的函数.

  • 请注意,枚举器不是Yesod库,因此查看Yesod文档在这个实例中没有帮助:)令人高兴的是,将`Data.Enumerator`插入Hoogle会生成正确的包,尽管它不会出现在` ($$)`... (2认同)

小智 6

Hoogle,这是非常好的,但遗憾的是不知道很多包.

Hayoo知道得更多,但它的界面看起来很古怪,而且它似乎没有像hoogle那样提供命令行工具.

如果你知道你正在处理什么包,你可以直接转到它的文档 - 例如枚举器文档,底部是模块列表.此外,这些文档始终具有索引,并允许您通过链接查看源代码.

作为最后的手段,使用cabal unpack enumerator和grep通过代码.