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?

War es hilfreich?

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

  1. Remove test.hi und test.o aus dem Verzeichnis und dann ghci test versuchen. [Manchmal, wenn ich ghc file.hs (und nicht ghc --make file.hs) laufen gibt es nicht definierten Referenzfehler, sondern schafft eine solche Dateien, die später von ghci gelesen werden. Vielleicht ist das ein Fehler.]

  2. 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top