Haskell GHCI配置文件能否使用CPP宏?

Haskell GHCI配置文件能否使用CPP宏?,haskell,c-preprocessor,ghci,Haskell,C Preprocessor,Ghci,我想最好设置我的全局GHCI配置,这样当提供它们的包存在时,我常用的导入就会自动发生 我尝试将此添加到~/.ghc/ghci.conf: :set -XCPP #ifdef MIN_VERSION_containers import Data.Set (Set) import qualified Data.Set as Set import Data.Map (Map) import qualified Data.Map as Map #endif 但

我想最好设置我的全局GHCI配置,这样当提供它们的包存在时,我常用的导入就会自动发生

我尝试将此添加到
~/.ghc/ghci.conf

:set -XCPP

#ifdef MIN_VERSION_containers
import           Data.Set (Set)
import qualified Data.Set as Set
import           Data.Map (Map)
import qualified Data.Map as Map
#endif
但显然,这是行不通的

> stack repl
Configuring GHCi with the following packages: 
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help

<interactive>:24:1: error: parse error on input ‘#’

<interactive>:29:1: error: parse error on input ‘#’
>堆栈复制
使用以下软件包配置GHCi:
GHCi,8.0.2版:http://www.haskell.org/ghc/  :? 求救
:24:1:错误:分析输入“#”时出错
:29:1:错误:分析输入“#”时出错

有没有办法让CPP宏工作,或者用其他方法来完成我的工作?

GHCI不能直接使用这些宏,但它们可以在您使用的文件中使用

例如,这就是我的设置现在的样子:

  • ~/.ghc/ghci.conf
    包含
    :add
    命令:

    > grep imports ~/.ghc/ghci.conf
    :add /home/chris/.ghc/imports.hs
    
  • ~/.ghc/imports/imports.hs
    包含我的CPP'ed导入:

    > cat ~/.ghc/imports/imports.hs
    {-# LANGUAGE CPP #-}
    
    #ifdef MIN_VERSION_containers
    import           Data.Set (Set)
    import qualified Data.Set as Set
    import           Data.Map (Map)
    import qualified Data.Map as Map
    #endif
    

我猜.ghci的工作原理就像您在ghci提示符下编写了
#ifdef…
,但什么都做不到。感谢您提供了此解决方案。