GHCI nicht Funktion aus Datei laden
Frage
In test.hs, ich habe:
doubleMe x = x + x
In GHCI, Typ I:
Prelude> :l test
[1 of 1] Compiling Main ( test.hs, interpreted )
Ok, modules loaded: Main.
*Main> doubleMe 9
<interactive>:1:0: Not in scope: `doubleMe'
*Main>
Warum? Wie zu beheben?
Lösung
Sind Sie sicher, dass Sie der richtige Laden test.hs? Vielleicht bist du im falschen Verzeichnis. Oder vielleicht haben Sie nicht speichern test.hs nach der Definition von doubleMe hinzufügen.
Andere Tipps
Meine Vermutung ist, dass Sie eine Hauptfunktion in der Quelldatei definiert haben.
Wenn Sie eine main
Funktion definiert haben, wird das Modul mit :l test
Laden keine Funktionen importieren, aber main
. In diesem Fall können Sie es durch das Voranstellen eines asterix zu dem Modulnamen laden: :l *test
.
Der Grund dafür ist, dass die kompilierte binäre nicht ausgeführten Top-Level-Funktionen verbergen. eine asterix Kräfte voranstellen GHCi die vorkompilierte Modul (Test) zu ignorieren und die Quelldatei statt (test.hs) interpretieren.
[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
Überprüfen Sie diese Links für weitere Informationen:
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
-
Remove test.hi und test.o aus dem Verzeichnis und dann
ghci test
versuchen. [Manchmal, wenn ichghc file.hs
(und nichtghc --make file.hs
) laufen gibt es nicht definierten Referenzfehler, sondern schafft eine solche Dateien, die später vonghci
gelesen werden. Vielleicht ist das ein Fehler.] -
Versuchen
:cd "<path to your file>" :l test :browse
in GHCI. Was ist das Ergebnis?
Das ist mir passiert ist, auch - und falls jemand anders läuft hinein und stolpert über diese Seite, war mein Problem, dass die VM ich GHCI lief in der Speicherplatz war aus - woraufhin es zu versuchen, und eine leere Datei zu laden jedes Mal.