我有一个识字的 haskell 文件,想使用条件编译。我使用文学编程的小鸟风格。以下代码不起作用。
> #if MIN_VERSION_base(4,6,0)
> import Control.Exception
> #endif
我需要 cabal 1.14.0 的解决方案
编辑:
cpphs有一个选项 --unlit 可以取消有文字的源代码,但我不知道如何将此选项传递给 cabal 中的 cpphs。
我有一个识字的 haskell 文件,想使用条件编译。我使用文学编程的小鸟风格。以下代码不起作用。
> #if MIN_VERSION_base(4,6,0)
> import Control.Exception
> #endif
我需要 cabal 1.14.0 的解决方案
编辑:
cpphs有一个选项 --unlit 可以取消有文字的源代码,但我不知道如何将此选项传递给 cabal 中的 cpphs。
正如@kosmikus 指出的那样,您可以简单地将C 预处理器指令放在任何>
或之外\begin{code}
,它们将按预期工作——如果它们不干扰您对文字代码的非代码部分的处理。
您根本不能将 C 预处理器指令与鸟式文学编程一起使用,因为 unlitting 步骤将 替换>
为空格,因此您没有机会#
进入第一列。-keep-tmp-files
您可以通过传递给 GHC 并签出生成的.lpp
文件来验证这一点。
您可以使用\begin{code}
...\end{code}
块来获得两者,但如果您将它们与>
-style 代码行混合,请记住额外的空间并将其添加到包裹在\begin{code}
...中的行中\end{code}
:
> {-# LANGUAGE CPP #-}
A literal comment
\begin{code}
#if MIN_VERSION_base(4,6,0)
import Control.Exception
#endif
\end{code}
> main = return ()