Wie kann ich ein runhaskell-Skript ohne .hs-Erweiterung mit ghci laden?

8

Ich habe ein Skript in haskell namens testscript mit dem folgenden Code geschrieben:

%Vor%

Nachdem das Skript ausführbar gemacht wurde, kann ich es mit ./testscript ausführen. Wenn ich jedoch versuche, das Skript mit ghci zu laden (zB mit :l testscript ), bekomme ich den Fehler

%Vor%

Wenn ich testscript in testscript.hs umbenenne und versuche, erneut mit ghci zu laden, bekomme ich den Fehler

%Vor%

Wenn ich die Shebang-Linie entferne, funktioniert es gut. Es ist jedoch mühsam, dem Skript eine Erweiterung .hs hinzuzufügen, die oberste Zeile zu entfernen, dann die Erweiterung .hs zu entfernen und die shebang-Zeile jedes Mal hinzuzufügen, wenn ich das Skript in ghci ausprobieren möchte (was jedes Mal ziemlich häufig vorkommt) Ich möchte eine Änderung vornehmen). Gibt es einen einfacheren Weg, dies zu tun?

Ich verwende ghc Version 7.0.3 unter Mac OS X 10.6.8

    
David Miani 18.11.2011, 04:53
quelle

1 Antwort

10

Sie können die Option -x verwenden, um GHCi (oder GHC) mitzuteilen, dass alle folgenden Dateien so behandelt werden sollen, als hätten sie die angegebene Erweiterung.

Es scheint keine Möglichkeit zu geben, diese Option innerhalb von GHCi anzugeben (zur Verwendung mit :load ), aber eine Workaround, die Sie verwenden können, wenn Sie dies wünschen, besteht darin, einen Symlink mit der Erweiterung .hs zu erstellen lade das.

Ihr zweites Problem mit der Shebang-Linie wird dadurch verursacht, dass der C-Präprozessor aus irgendeinem Grund auf Ihrer Quelldatei ausgeführt wird (meine alte GHC-Installation auf Ubuntu tut dies nicht). Sie können dies deaktivieren, indem Sie die Option -XNoCPP verwenden.

Für Ihren Fall sollte dies von der Befehlszeile aus funktionieren:

%Vor%     
hammar 18.11.2011, 05:28
quelle

Tags und Links