Haskell プログラミング入門
インタプリタの起動
ghci でインタプリタが起動.「:quit」または「:q」または「CTRL + D」(同時押し)で終了
ghci

評価
元の「式」から「値」を得ることを評価という. 式と値の詳しい説明は後で触れることにしよう. 式から得られた値のことを,その式の評価結果という
四則演算
四則演算: +, -, *, /
2 * 3
10 + 20
3 / 5
1 / 3
10 - 20

べき乗: ^
2 ^ 10

かっこの内側が先に評価される(評価の優先順位)
:{
1.05 * (10 + 20 + 30)

整数に関する演算
- succ

関数と関数適用
複数の式を一般化して,「ラムダ 仮引数の並び 関数の本体式」の形で表現したものを関数抽象という (ラムダ抽象ともいう).
関数には引数と帰り値の間に関数関係がある.

関数適用では,関数抽象の仮引数を,実際の値に束縛し,関数の本体式の評価結果を得ていることになる.
下の例では,関数「(\ x -> x * 1.05)」に値 100, 値 200, 式 (100 + 200 + 300) を適用している.
1.05 * 100
1.05 * 200
1.05 * (100 + 200 + 300)
(\ x -> x * 1.05) 100
(\ x -> x * 1.05) 200
(\ x -> x * 1.05) (100 + 200 + 300)

値としての関数

式と値,ファーストクラスオブジェクト
変数を,値に束縛することができる.このとき変数に値が結びついていることに注意. 束縛された変数が,変数名を使って参照される.
let を用いた例を以下に示す.
let foo = 100
let ans = True
let name = "kaneko"


特記事項:関数も値 値の型はいろいろ
let foo n = 2 ^ n
foo 10
foo 12

値の種類
- 数値:
数値に関する関数の例:
- 文字列:
- ブール値:
- シンボル:
- リスト:
要素の並びをひとまとまりにしたもの.
リストに関する関数の例: length (リストの要素数), take (リストの先頭から任意個数の要素の取得.結果はリスト), reverse (リストの逆転.結果はリスト), head (リストの先頭要素), tail (リストの第二要素以降.結果はリスト),
take, head, tail での実行時エラーについては、あとで考えることにしよう.
- 構造体:
- 関数:
データ型
副作用
print による画面表示

readLn によるデータ入力

再帰関数

ghci では,複数行に分けたい場合には :{ と :} で囲む
:{
let
kaijou 0 = 1
kaijou n = n * kaijou (n - 1)
:}
kaijou 5

遅延束縛
