Haskell中双美元符号($$)的含义是什么?

时间:2015-11-12 13:19:21

标签: haskell operators

我正在尝试使用LaTeX.hs作为指南,为pandoc破解新的文件格式编写器。广泛使用$$运算符,但我无法在Haskell syntax documentation中找到它,甚至在其他项目中引用。这是一个例子:

let align dir txt = inCmd "begin" dir $$ txt $$ inCmd "end" dir

这几乎看起来像某种类型的连接运算符,但我无法弄清楚这与其他连接操作有何不同。这个运算符是什么,它是如何工作的,它在哪里记录?

2 个答案:

答案 0 :(得分:5)

这是HayooHoogle的工作。它是Text.Pandoc.Pretty中定义的运算符。

($$) :: Doc -> Doc -> Doc infixr 5
     

a $$ ba置于b之上。

基本上,它会确保ab位于不同的行上,从而产生更好的LaTeX输出:

\begin{dir}
txt
\end{dir}

答案 1 :(得分:4)

Pandoc在内部定义了自己的漂亮打印库,但操作(以及类型的名称Doc)在Haskell漂亮的打印库中是标准的。 Pandoc还定义了其他魔术师,如vcathsep<+>等等;周围有许多漂亮的打印模块,但它们总是支持这些操作。

 > import Text.PrettyPrint
 > text "hello" <> text "world"
 helloworld
 > text "hello" <+> text "world"
 hello world
 > text "hello" $$ text "world" 
 hello
 world
 > text "hello" <+> text "world" $$ text "goodbye" <+> text "world"
 hello world
 goodbye world
粗略地说,

ghci在这里显示“文档会是什么样子”。