GHCI配置文件可以使用CPP宏吗?

时间:2017-02-18 00:36:28

标签: 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

但显然这不起作用。

> 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 ‘#’

有没有办法让CPP宏工作,或者用其他方式来完成我想要做的事情?

1 个答案:

答案 0 :(得分:4)

这些宏不能由GHCI直接使用,但可以在您使用GHCI's :add command包含的文件中使用。

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

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

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

    > 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