语法$$在Haskell中是什么意思?

语法$$在Haskell中是什么意思?,haskell,syntax,Haskell,Syntax,“啊,”你可能会想。。。“另一个语法问题,这里让我为你谷歌一下,noob。”但唉!我已经在谷歌上搜索过了,但我还是被难住了 在yesod博客的代码中找到 import System.IO import Data.Enumerator import Data.Enumerator.Binary main = withFile "output.txt" WriteMode $ \output -> run_ $ enumFile "input.txt" $$ iterHand

“啊,”你可能会想。。。“另一个语法问题,这里让我为你谷歌一下,noob。”但唉!我已经在谷歌上搜索过了,但我还是被难住了

在yesod博客的代码中找到

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

main =
    withFile "output.txt" WriteMode $ \output ->
    run_ $ enumFile "input.txt" $$ iterHandle output 

但是“$$”操作符对我来说是新的。Haskell 2010报告仅将其作为操作员符号提及一次。它有什么作用

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

有,这很好,但遗憾的是,不知道很多包

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

如果您知道要处理的软件包,可以直接转到其文档,例如,底部有模块列表。此外,这些文档总是有一个,并允许您通过源链接查看源代码


最后,使用
cabal unpack enumerator
和grep遍历代码。

只需使用hoogle,并确保告诉它您正在使用的软件包-它工作正常


请注意,枚举器不是YesSOD库,因此在这种情况下查看YesSOD文档没有帮助:)幸好,将
数据插入Hoogle中。枚举器
生成正确的包,尽管它不会作为
($$)
的结果出现……另一个选项是。有趣的是,它为“($$”查找结果,但既不为“$$”也不为“($$)”查找结果.Dang!我自己不会想到的!我只是在报告中引用它时假设它是一个内置的。还有其他常见的运算符吗?可能是关于不同类型的函数应该使用哪种运算符的样式指南?@Toymakerii:你说样式指南是什么意思?老实说,
$$
是不太常见。真正常见的运算符是在真正常见的库中定义的,如前奏曲中的
$
>=
,或
控件中的
。Applicative
@Toymakerii:报告引用
($$)的位置
?我怀疑它指的是一个操作员;没有标准库定义它,因此它没有特别的理由。在StackOverflow,我们鼓励noob问题,只要你努力弄清楚你的问题是什么,并适度努力在谷歌上搜索答案,避免重复。你的问题是明确的、独特的、简单的谢谢Dan!通常我的问题比一个简单的操作员更复杂,所以我有点紧张,因为我错过了一些东西,RTFM和所有的东西。你可能用谷歌搜索过它,但你用谷歌搜索过了吗?谷歌知道的比你想象的要多。只需在你的搜索中添加
+somepkg
。@Thomas的问题是如果你不知道我不知道你需要哪个软件包。顺便说一句,我是胡格尔,不是谷歌。@DanielFisher是对的。我的手机认为胡格尔==谷歌,对不起。哦,在这种情况下,我们确实知道要查看哪一组软件包,(但我当然同意——你总体上是对的,如果网络胡格尔默认包含更多的软件包就好了)@Thomas说,“搜索你知道的所有软件包”按钮,或搜索某个类别中所有软件包的选项(hackage,而不是CT),“所有软件包”可能会造成太大的搜索空间。无需为你的手机自动更正道歉。不过,根据你的打字错误率,如果可能的话,最好将其关闭。