Tahminimce, kaynak dosyanızda bir ana işlev tanımladınız.
main
işlevini tanımladıysanız, modülü :l test
ile yüklemek, main
işlevlerini çağırmaz. Bu durumda, modül adına bir asterix hazırlayarak yükleyebilirsiniz: :l *test
. Nedeni, derlenmiş ikili dosyaların, dışa aktarılamayan üst düzey işlevleri gizlemesidir. Bir asteriksin hazırlanması, GHCi'yi önceden derlenmiş modülü (test) yok saymaya zorlar ve bunun yerine kaynak dosyasını yorumlayacaktır (test.hs).
[jkramer/sgi5k:.../haskell]# cat test.hs
main = do
print $ doubleMe 2
doubleMe x = x + x
[jkramer/sgi5k:.../haskell]# ghc --make test
[jkramer/sgi5k:.../haskell]# ghci
[...some messages...]
>> :l test
Ok, modules loaded: Main.
>> :t doubleMe
<interactive>:1:0: Not in scope: `doubleMe'
>> :l *test
[1 of 1] Compiling Main (test.hs, interpreted)
Ok, modules loaded: Main.
>> :t doubleMe
doubleMe :: (Num a) => a -> a
Kontrol fazla bilgi için bu bağlantıları:
http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/ghci-compiled.html http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html#ghci-scope
Masaüstünde bir klasörün kısayolu yerine bir klasör oluşturmuştum. –