我认为设置我的全局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宏工作,或者用其他方式来完成我想要做的事情?
答案 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