2015-12-06 『ふつうのHaskellプログラミング』 もくもく読書会(第1章) の振り返り
ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
- 作者: 青木峰郎,山下伸夫
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/06/01
- メディア: 単行本
- 購入: 25人 クリック: 314回
- この商品を含むブログ (320件) を見る
第1章 Haskellの概要
Haskellとは
- 関数型プログラミングを目的とする言語
- 関数を中心にしてプログラムを組み立てるプログラミング
Haskellの関数
- 引数と返り値の対応関係を記述したもの
- メソッドのようにクラスに所属しているわけではない
- 常に値を返す
Haskellの利点
- 柔軟にプログラミングできる
- コンパイル時にの型チェックが強力
- 読みやすい
- 遅延評価が基本
柔軟にプログラミングできる
- 関数それ自体を値として活用できる
- 関数を引数として受け取ったり、返したりする関数
- 「関数を引き数としてとる」≠「関数の返り値を引数に取る」※ 第3章で説明される
(疑問点や感想)
filterの例っだと、そもそもfilter関数について知ってないとわかりづらいのでは?
↓
filter関数について
filter リストの要素に対してBool値を返す関数 リスト
filter関数は受け取ったリストの要素に対してTrueかFalseを判定し、Trueのもののみで構成されたListを返す関数
コンパイル時にの型チェックが強力
- 他の言語だとキャストやvoidポインタを使わないと要素の型が柔軟にできない
- Haskellでは多相型(polymorphic)という機能で様々な型を統一的に扱える
- 型のチェックはコンパイル時に行われる
- Javaの総称型は複雑すぎ
読みやすい
- 再代入がないので読みやすい → グローバル変数を使うと、変数がいつどこで変更したかわかりにくい
- 再代入の禁止を言語仕様上制限しているので絶対できなくなる
遅延評価が基本
評価とは
- 「評価」は「実行」と似たような意味
- 「式を評価する」 = 式を実行して値を得たり入出力したいるすることを指す
遅延評価
- まず関数を評価して、それから実際に必要になった引数だけを評価する
(疑問点や感想)
いまいち遅延評価の説明がわかりづらい → 第5章で詳細が述べられてるそうなので、そこまで待つ
Haskellの「壁」
Haskellのインストール
情報が古いのでホームページで最新の情報を仕入れたほうがよい
Hello, World!!
ghcコマンド
- コマンドプロンプトを開いて、ソースファイルのフォルダに移動
ghc hello.hd -o hello
hello
コンパイルすると下記のファイルができる
- hello.exe
- hello.hi
- hello.o
runghcコマンド
コンパイルなしで実行できるコマンド
- コマンドプロンプトを開いて、ソースファイルのフォルダに移動
runghc hello.hs
実行するまで遅い
ghciコマンド
GHCi
次の手順でソースファイルをロードし実行できる(Windows)
- GHCiを起動
:cd ソースファイルのフォルダ
load hello.hs
main
ちなみにGHCiからソースファイルをロードして実行してもGHCでコンパイルした時のようなファイルは生成されないもよう → どこか知らないとこで生成されてる?
↓
インタープリターだからそもそもコンパイルしない。 GHCとインタプリターは違う実装がされているらしい。 細かいところで違う動きをするらしい。