Haskell勉強会

関数型プログラミングの学習日記

HaskellのGHCiでファイルに書いたプログラムをロードする方法

Haskellのプログラムをファイルに書いて、インタープリター(GHCi)で読み込み、実行する方法のメモ。

 

 

スクリプトファイルの用意

まず、Haskellのコードを書いたファイルを用意します。

 

フォルダを用意する

Windowsの場合、ユーザーのホームディレクトリに「haskell」等というフォルダを作ります。

 

ファイルを作成する

この「haskell」フォルダの中に、「test01.hs」というファイルを作成します。

 

サンプルコードを書く

「test01.hs」をエディターで開いて、次の2行を書き込み、保存します。

-- 2値の平均を返す関数avg
avg x y = (x + y) / 2

 

GHCiで実行する

用意したHaskellのプログラムを実行してみます。

 

GHCiを起動する

コマンドプロンプトを起動して、「ghci」とコマンドを入力します。

 

外部ファイルからプログラムを読み込む

:l haskell/test01

とコマンドを入力します。

 

「:l」は、ファイルを読み込む「:load」というコマンドの省略形です。

 

(参考)

https://ghcguide.haskell.jp/users_guide/ghci.html#loading-source-files

5.2. ソースファイルをロードする

HaskellのソースファイルをGHCiにロードするには :load コマンドを使います.

(ヒント: load は :l に短縮できます)

 

https://ghcguide.haskell.jp/users_guide/ghci.html#ghci-cmd-:load

:load[!] [*]⟨module⟩

指定した ⟨module⟩ および,それが依存するすべてのモジュールを再帰的にロードします.

個々の ⟨module⟩ はモジュール名またはファイル名でなければならない.

また,パッケージ内のモジュールの名前を指定することはできません.

 

  • ファイルの場所(フォルダ)
  • ファイル名
  • ファイル内のプログラムの記述

に誤りがなければ、以下のようなメッセージが表示されます。

[1 of 1] Compiling Main        ( haskell\test01.hs, interpreted )
Ok, modules loaded: Main.

 

サンプルコードの実行

試しに、10と20の平均値を求めてみます。

avg 10 20

とコマンドを入力してみます。

 

ghci> avg 10 20

15.0

 

15(15.0)という答が返って来たら、テストは成功です!!!

 

f:id:hamamuratakuo:20170822142914p:plain

 

GHCiでカレントディレクトリを移動する

Google検索したら、フォルダにあるファイルをロードする(読み込む)別の方法も紹介されていました。

 

(参考)

ソースファイルをロードする

カレントディレクトリ以外の場所に保存した場合、GHCiでディレクトリを正しく変更する必要がある。

Prelude> :cd dir

 

「:cd」というコマンドで、ディレクトリを移動して、それからファイルをロードすることも可能でした。

 

f:id:hamamuratakuo:20170822143929p:plain

 

まとめ

Haskellのプログラム(スクリプト)は、外部ファイルに保存できる。

Haskellインタプリタ―(GHCi)で、外部ファイルからプログラムを読み込んで実行できる。

 

  1. 「:l ディレクトリ/ファイル」
  2. 「:cd ディレクトリ」→「:l ファイル」

どちらの方法でもOK

 

練習用のテストコードをたくさん作ると、ゴチャゴチャして後で分かりづらくなりそうなので、フォルダやファイルを用意して分類しておきたいです。

 

 

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!