如何评论文字haskell中的行

时间:2013-07-21 11:36:58

标签: haskell latex literate-programming

我无法在lhs风格的haskell程序中注释出代码行,因此haskell和Latex都忽略了该行。

当我使用--时,我的lh2tex会尝试将haskell代码渲染为注释。但这通常会失败,因为代码中包含美元和其他令Latex混淆的东西。

当我使用--%时,Latex很高兴,因为它只是忽略了评论,但是haskell不喜欢--%。只有当我在-- haskell之后放置一个空格时才可以使用它,但是Latex再次抱怨。

2 个答案:

答案 0 :(得分:2)

如果你正在使用lhs2TeX(你似乎是),那么你可以使用lhs2TeX条件隐藏LaTeX中的代码:

%if False

> code seen by Haskell but not typeset
> -- comment that is not typeset

%endif

> code seen by Haskell and typeset
> -- comment that will be typeset

正如Daniel Wagner在评论中建议的那样,另一个选择是在整行前加%来将它们变成LaTeX评论。

lhs2TeX将把评论视为LaTeX文本,但它还会执行预处理。因此,在带有评论的行上使用%(如在-- %中)将起作用,因为%将在中间结束生成的TeX文件中的部分相关代码和触发错误。

答案 1 :(得分:2)

显然,在将--渲染为LaTeX之前,lhs2tex仍然会对-- %之后的任何内容进行预处理,这就是--%无效的原因,正如您在问题中指出的那样{{1}不被Haskell认可为评论,因为它可能是一个操作员。

最简单的解决方法是使其成为Haskell和LaTeX的注释行。例如,如果你有:

> main = do
>       options <- getOptions
>       setup <- fmap readSetup $ readFile "setup.dat"
>       configureWith options setup
>       putStrLn "Some message to the user"

如果您想暂时错过configureWith行,可以这样做:

> main = do
>       options <- getOptions
>       setup <- fmap readSetup $ readFile "setup.dat"

% >       configureWith options setup

>       putStrLn "Some message to the user"

空白行是必要的,因为在文字Haskell中,您不能在代码行旁边有注释行。 (这是为了防止错过初始>的简单错误。)