Can a GHCI config file use CPP macros?

旧时模样 提交于 2019-12-07 10:13:45

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!