2017-02-18 25 views
4

我认为这将是很好的,建立我的全球GHCI配置,使我的常用导入自动发生时,提供它们的包都存在。GHCI配置文件可以使用CPP宏吗?

我尝试添加这~/.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

我想那个.ghci就好像你在GHCi提示符下编写了'#ifdef ...'一样,没有做任何事情。 – chi

回答

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'ed进口:

    > 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 
    
+0

感谢[Tim Humphries](https://twitter.com/thumphriees/status/832752388888883201)解决方案。 –

相关问题