web-dev-qa-db-ja.com

インタプリタモードでhaskellファイルを実行する方法

Haskellファイルを解釈できると言われました(Ruby/Python/Perlのように動作することを意味すると思います)。ただし、これを行うためのコマンドラインオプションがghcに見つかりません。それは常に私のファイルをコンパイルしたいです。 ghciも見てみましたが、それはいつも私をreplに投げ捨てます。

私は基本的にghc -i MyFile.hs(ここで-iは解釈モードと相関するふりをしている作り上げフラグです)実行して、アイデアや学習を試みている間に素早いフィードバックが得られるようにします。

66
Joshua Cheek
$ runhaskell MyFile.hs

または、runghc(これらは同じものです)。 ghci MyFile.hsは、インタラクティブなREPLセッションとMyFile.hsがロードされますが、メインプログラムを実行する場合は、runhaskellを使用します。

毎回全体を実行するのではなく、GHCiで分離されたユニットとしてプログラムの一部をテストする習慣に入ることはおそらく良い考えですが、明らかに短いスクリプトの場合は、全体を実行するだけで最も簡単で簡単です。

112
ehird

次のようなスクリプトを作成できます。

#!/usr/bin/env runhaskell
main = putStrLn "hello world"

ファイルを実行可能にした後(つまりchmod +x haskell_script)、他のシェルスクリプトと同様に実行できます。

36
David Miani

ターミナルでghciを実行してGHCインタープリターを開き、:load example.hs。詳細はこちら link

11
Óscar López

ファイルに記述されたコードを実行するには、myfile.txt、GHCインタプリタで動作する次のような単純なコード行が含まれます。

let a = 0 in a:[1,2]
let x = [1,2] in x ++ [3,4]

できるよ:

ghc -e ':script myfile.txt'

編集

Windowsでは、二重引用符が必要です。

ghc -e ":script myfile.txt"

代わりに、GHCiを開いて:script myfile.txt

1