问题
I was thinking it would be nice to set up my global GHCI config such that my commonly-used imports occur automatically when the packages that provide them are present.
I tried adding this to ~/.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
But apparently that does not work.
> 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 ‘#’
Is there a way to get CPP macros to work, or some other way to accomplish what I'm trying to do?
回答1:
Those macros cannot be used directly by GHCI, but they can be used in a file you include using GHCI's :add command.
For example, this is what my setup now looks like:
~/.ghc/ghci.conf
contains the:add
command:> grep imports ~/.ghc/ghci.conf :add /home/chris/.ghc/imports.hs
~/.ghc/imports/imports.hs
contains my CPP'ed imports:> 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
来源:https://stackoverflow.com/questions/42309705/can-a-ghci-config-file-use-cpp-macros