Указание пути поиска для операций «load» в ghci
ВЗагрузка исходных файлов в нем говорится, что путь поиска для поиска исходных файлов указывается с опцией -i:
ghci -idir1:...:dirn
Означает ли это, что когда кто-то выполняет:
:load test.hs
тогда ghci ищет в каталогах выше файл test.hs? Я видел ответ наПроблема с указанием исходного каталога для GHC но мне все еще не ясно об этом.
Например, в Windows XP я поместил test.hs в:
C:\Documents and Settings\winuser\My Documents
а затем побежал:
ghci -iC:\Documents and Settings\winuser\My Documents
Однако при выполнении:load test.hs
ghci пожаловался на невозможность найти файл.
[РЕДАКТИРОВАТЬ 1]
Я хочу избежать использования:cd
потому что он выгружает все загруженные модули, что не позволяет мне загружать файлы из разных мест
[РЕДАКТИРОВАТЬ 2: ответ на jozefg]
--C:\A\A.hs
module A where
myaddA::Int->Int->Int
myaddA x y = x+y
--C:\B\B.hs
module B where
myaddB::Int->Int->Int
myaddB x y = x+y
Тогда я могу сделать следующее:
Prelude> :cd C:\A
Prelude> :load A
[1 of 1] Compiling A ( A.hs, interpreted )
Ok, modules loaded: A.
*A> myaddA 2 3
5
*A> :cd C:\B
Warning: changing directory causes all loaded modules to be unloaded,
because the search path has changed.
Prelude> :load B
[1 of 1] Compiling B ( B.hs, interpreted )
Ok, modules loaded: B.
*B> myaddB 3 4
7
Однако я не нашел способа сделать модули A и B одновременно доступными, когда модули хранятся в файлах в разных местах.
[РЕДАКТИРОВАТЬ 3: ответ на jozefg]
>ls
temp temp2
>more temp/A.hs
module A where
addA = (+)
>more temp2/B.hs
module B where
addB = (+)
>cd temp
>ghci -i../temp2
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> import A B
<interactive>:1:10: parse error on input `B'
[РЕДАКТИРОВАТЬ 4: ответ на jozefg]
>ls
temp temp2
>more temp/A.hs
module A where
addA = (+)
>more temp2/B.hs
module B where
addB = (+)
>cd temp
>ghci -i../temp2
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> import A
<no location info>:
Could not find module `A'
It is not a module in the current program, or in any known package.
Prelude> import B
<no location info>:
Could not find module `B'
It is not a module in the current program, or in any known package.