2017-05-19 31 views
0

我似乎无法直接执行ghci当导入一个模块,但是我能够执行ghci xmonad.hs时加载模块。如何导入GHCi路径中的模块?

目录树:

. 
├── ghcid.sh 
├── lib 
│   ├── FocusWindow.hs 
│   ├── MiddleColumn.hs 
│   ├── Readme.md 
│   └── TAGS 
├── Readme.md 
├── TAGS 
├── xmonad2.hs 
├── xmonad.errors 
├── xmonad.hs 
├── xmonad.state 
├── xmonad.state.backup 
└── xmonad-x86_64-linux 

.ghci

:set -Wall 
:set -i:lib 

ghci的提示:

Prelude> :show paths 
current working directory: 
    /home/chris/.xmonad 
module import search paths: 
    . 
    lib 
Display all 2040 possibilities? (y or n) 
Prelude> import FocusWindow 

<no location info>: error: 
    Could not find module ‘FocusWindow’ 
    It is not a module in the current program, or in any known package. 

ghci的xmonad.hs提示

GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help 
Loaded GHCi configuration from /home/chris/.xmonad/.ghci 
[1 of 3] Compiling FocusWindow  (lib/FocusWindow.hs, interpreted) 
[2 of 3] Compiling MiddleColumn  (lib/MiddleColumn.hs, interpreted) 
[3 of 3] Compiling Main    (xmonad.hs, interpreted) 
Ok, modules loaded: MiddleColumn, FocusWindow, Main. 
*Main> import FocusWindow 
*Main FocusWindow> :show paths 
current working directory: 
    /home/chris/.xmonad 
module import search paths: 
    . 
    lib 
+0

你试过'? –

+0

工作,谢谢。我仍然想知道为什么。 –

回答

3

只能导入模块从一些已知的包,或者已被加载。当您运行ghci xmonad.hs,它加载其所需xmonad.hs和任何模块。当您运行ghci时,默认情况下它不会加载任何内容。

您可以通过运行:load FocusWindow,或:l FocusWindow简称加载单独的模块。这将自动也“进口”,在一个特殊的方式,模块(具体是:让所有可用的名字,甚至未汇出的),你也可以做到通过FocusWindow使用的模块的正常进口。

这很可能是ghci中的import支持,试图在抱怨之前加载未知模块一个不错的功能。我怀疑添加该功能的补丁会被接受。做进口前负荷xmonad`: