首页 > 解决方案 > haskell 代码中包含的 cpp 语句不起作用

问题描述

我在 Haskell 中使用{-# LANGUAGE CPP #-} pragma,但是,haskell 代码中包含的 cpp 语句对我不起作用:当我运行堆栈安装时,编译器给我以下错误:

error: parse error on input '#'.

有什么建议么?

这是我在 GHC 8.4.3 版中使用的代码示例:

{-# LANGUAGE CPP #-}
  ...
  #if MIN_VERSION_base(4,9,0)
  import Data.Functor.Classes
  #endif

标签: haskellc-preprocessorghccabal

解决方案


代码 haskell 中的 cpp 语句必须不缩进。

就我而言,虽然 Haskell 代码缩进是正确的,但 Haskell 代码中的 c++ 语句必须是未缩进的。

我只是将代码行从 cpp 改为零缩进。Haskell 代码的其余部分保持不变。

代码更正:

{-# LANGUAGE CPP #-}
  ...
#if MIN_VERSION_base(4,9,0)
  import Data.Functor.Classes
  ...
#endif

此致。


推荐阅读