Chr*_*tin 4 haskell ghci c-preprocessor
我认为最好设置我的全局 GHCI 配置,以便当提供它们的包存在时,我常用的导入会自动发生。
\n\n我尝试将其添加到~/.ghc/ghci.conf:
:set -XCPP\n\n#ifdef MIN_VERSION_containers\nimport Data.Set (Set)\nimport qualified Data.Set as Set\nimport Data.Map (Map)\nimport qualified Data.Map as Map\n#endif\nRun Code Online (Sandbox Code Playgroud)\n\n但显然这不起作用。
\n\n> stack repl\nConfiguring GHCi with the following packages: \nGHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help\n\n<interactive>:24:1: error: parse error on input \xe2\x80\x98#\xe2\x80\x99\n\n<interactive>:29:1: error: parse error on input \xe2\x80\x98#\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法让 CPP 宏起作用,或者有其他方法来完成我想要做的事情?
\n这些宏不能直接由 GHCI 使用,但可以在使用GHCI:add命令包含的文件中使用。
例如,我的设置现在是这样的:
~/.ghc/ghci.conf包含:add命令:
> grep imports ~/.ghc/ghci.conf
:add /home/chris/.ghc/imports.hs
Run Code Online (Sandbox Code Playgroud)~/.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
Run Code Online (Sandbox Code Playgroud)