我有一个识字的 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 ()