Haskell > 本 > 入門Haskellプログラミング > LESSON 1
#html{{
table border="0" cellpadding="5"><tr><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4798158666/vertex9-22/" target="_blank"><img src="
" border="0"></a></td>
td> </td>
td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4798158666/vertex9-22/" target="_blank">入門Haskellプログラミング</a><br>Will Kurt<br>翔泳社<br>2019-07-31<br>¥ 4,104</td></tr></table>
}}
Haskellの実行環境は、Haskell Platformを使うと簡単にインストールできます。
ここからOSに合ったインストーラーをダウンロードして、インストールすればOKです。
(本書の学習では、Windows用のHaskell Platformを使ってみます。)
Windowsの場合は、「WinGHCi」というHaskellのインタープリターが使えます。
Haskellの学習では、主にこれを使ってサンプルコードを動作確認します。
WinGHCiで
:?
というコマンドを打てば、簡易な説明が表示されます。
WinGHCiのメニューで、[File] → [Load]を選ぶと、Haskellのプログラムをロードできます。
WinGHCiのメニューで、[Tools] → [GHC compiler]を選ぶと、ロードしたプログラムがコンパイルされます。
#code(haskell){{
print "Hello World!"}}
WinGHCiでロードした後、「main」という関数を実行(mainと入力してエンターキーを押す)すれば、
Hello World!
と表示されます。
さらにコンパイルを実行すると、「hello.hs」と同じフォルダに「hello.exe」が作成されます。
コマンドプロンプトを開いて、「hello.exe」を実行すれば、
Hello World!
と表示されます。
Haskellのコードを書くためのエディターやIDEは、自分が好きなものを使えばよいでしょう。
Visual Studio CodeにHaskell用のプラグインをインストールすれば、コードハイライトなどができます。
GHCのコマンドの使い方が、Haskell Platformの場合とStackの場合で違うので注意!
cf. Haskellのインストール
以下、Stackの場合で記述。
端末を起動して、「hello.hs」があるディレクトリーに移動する。
$ stack exec ghc hello.hs
これで「hello.hs」がコンパイルされて、「hello」というバイナリーファイル(実行ファイル)が生成される。
stack exec ghc ソースファイル
という形式。
コンパイル時のオプションもいろいろ指定できる。
「hello」というバイナリーファイル(実行ファイル)がある場所で、次のコマンドを実行する。
$ ./hello "Hello, World!"
これで、コンパイルの成功が確認できた。
$ stack exec ghc ソースファイル -- -o 別名
という形式で指定できる。
※PlatformのGHCの場合、「--」という部分(オプション付与の指示)が不要。
$ ghc ソースファイル -o 別名
(stackのコマンドの書き方は、ちょっとだけ違う部分がある場合もあるので、面倒くさいかも?エラーが起きたときは、stackとPlatformの違いを思い出そう。)
$ stack exec ghc hello.hs -- -o helloworld
これで「helloworld」というバイナリーファイル(実行ファイル)が生成される。
$ ./helloworld "Hello, World!"
$ stack exec ghci
でGHCi(インタープリター)を起動する。
起動した後は、上記のPlatform(WinGHCi)と同様の手順で操作できる。
$ stack exec ghci
スクリプトファイルをロードする。
Prelude> :l hello [1 of 1] Compiling Main ( hello.hs, interpreted ) Ok, one module loaded.
main関数を実行する。
*Main> main "Hello, World!"
空のロードを実行して、前回のロードを解除する。
*Main> :l Ok, no modules loaded.
インタープリターを終了する。
Prelude> :q Leaving GHCi.
これら一連の基本作業は、今後何度も行うので、覚えておこう。