#author("2020-04-25T15:49:00+00:00","default:sagasite","sagasite")
[[Haskell]] > 本 > [[入門Haskellプログラミング]] > LESSON 1
#contents
*入門Haskellプログラミング [#xe2619ad]
#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="https://images-fe.ssl-images-amazon.com/images/I/51o1oUqjsvL._SL160_.jpg" 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>
}}
**LESSON 1 [#n6e4886f]
-Haskellの開発ツールのインストール
-GHCとGHCiの使用
-Haskellプログラムの記述に関するヒント
* Haskell Platform [#u8af3cce]
Haskellの実行環境は、Haskell Platformを使うと簡単にインストールできます。
- Haskell Platform - Google 検索 https://www.google.com/search?q=Haskell+Platform
- Download Haskell Platform https://www.haskell.org/platform/
ここからOSに合ったインストーラーをダウンロードして、インストールすればOKです。
(本書の学習では、Windows用のHaskell Platformを使ってみます。)
* WinGHCi [#f5468b3e]
Windowsの場合は、「WinGHCi」というHaskellのインタープリターが使えます。
Haskellの学習では、主にこれを使ってサンプルコードを動作確認します。
&ref(WinGHCi.png);
WinGHCiで
:?
というコマンドを打てば、簡易な説明が表示されます。
** WinGHCiでコンパイルする方法 [#tc8637fd]
***Haskellコードをロード(読み込み) [#m961cbd4]
WinGHCiのメニューで、[File] → [Load]を選ぶと、Haskellのプログラムをロードできます。
***コンパイラーの実行 [#u111d344]
WinGHCiのメニューで、[Tools] → [GHC compiler]を選ぶと、ロードしたプログラムがコンパイルされます。
-サンプルコード 「hello.hs」というファイル名で保存しておきます。
#code(haskell){{
-- hello.hs my first haskell file !
main = do
print "Hello World!"
}}
WinGHCiでロードした後、「main」という関数を実行(mainと入力してエンターキーを押す)すれば、
Hello World!
と表示されます。
さらにコンパイルを実行すると、「hello.hs」と同じフォルダに「hello.exe」が作成されます。
コマンドプロンプトを開いて、「hello.exe」を実行すれば、
Hello World!
と表示されます。
&ref(WinGHCi_compiler.png);
* Visual Studio CodeでHaskellのコードを編集 [#rfe51f56]
Haskellのコードを書くためのエディターやIDEは、自分が好きなものを使えばよいでしょう。
Visual Studio CodeにHaskell用のプラグインをインストールすれば、コードハイライトなどができます。
- Haskell Syntax Highlighting - Visual Studio Marketplace https://marketplace.visualstudio.com/items?itemName=justusadam.language-haskell
&ref(VSCode_Haskell_Syntax.png);
//===== ===== ===== ===== ===== ===== ===== =====
* Linuxの場合(Ubuntu) [#nbe8ed4b]
GHCのコマンドの使い方が、Haskell Platformの場合とStackの場合で違うので注意!
cf. [[Haskellのインストール>Haskell_install]]
以下、Stackの場合で記述。
** コンパイル [#wa735b6c]
端末を起動して、「hello.hs」があるディレクトリーに移動する。
$ stack exec ghc hello.hs
これで「hello.hs」がコンパイルされて、「hello」というバイナリーファイル(実行ファイル)が生成される。
stack exec ghc ソースファイル
という形式。
コンパイル時のオプションもいろいろ指定できる。
*** 実行ファイルの動作確認 [#b7930245]
「hello」というバイナリーファイル(実行ファイル)がある場所で、次のコマンドを実行する。
$ ./hello
"Hello, World!"
これで、コンパイルの成功が確認できた。
*** 別名の実行ファイルにコンパイルする場合のコンパイルオプション [#na8aea73]
$ stack exec ghc ソースファイル -- -o 別名
という形式で指定できる。
※PlatformのGHCの場合、「--」という部分(オプション付与の指示)が不要。
$ ghc ソースファイル -o 別名
(stackのコマンドの書き方は、ちょっとだけ違う部分がある場合もあるので、面倒くさいかも?エラーが起きたときは、stackとPlatformの違いを思い出そう。)
$ stack exec ghc hello.hs -- -o helloworld
これで「helloworld」というバイナリーファイル(実行ファイル)が生成される。
$ ./helloworld
"Hello, World!"
** インタープリター [#u2bad22b]
$ 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.
これら一連の基本作業は、今後何度も行うので、覚えておこう。