我直接执行ghci
时似乎无法导入模块,但是我可以在执行ghci xmonad.hs
时加载模块。
目录树:
.
├── 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 :(得分:4)
您只能导入来自某个已知包或已加载的模块。当您运行ghci xmonad.hs
时,它会加载xmonad.hs
以及它所需的所有模块。当您运行ghci
时,默认情况下它不会加载任何内容。
您可以通过运行:load FocusWindow
或:l FocusWindow
来单独加载您的模块。这将自动以特殊方式“导入”该模块(特别是:使所有名称可用,甚至是未导出的名称),并且您还可以正常导入FocusWindow
使用的模块。
ghci的import
支持在抱怨之前尝试加载未知模块可能是一个很好的功能。我怀疑添加该功能的补丁将被接受。