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?
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