金子邦彦研究室プログラミングHaskell プログラミング入門

Haskell プログラミング入門

サイト内の関連ページ

関連する外部ページ

リファレンスマニュアルの入手先は→ http://haskell.org/haskellwiki/GHC:Documentation

インタプリタの起動

ghci でインタプリタが起動.「:quit」または「:q」または「CTRL + D」(同時押し)で終了

ghci

[image]

評価

元の「式」から「値」を得ることを評価という. 式と値の詳しい説明は後で触れることにしよう. 式から得られた値のことを,その式の評価結果という

四則演算

四則演算: +, -, *, /

2 * 3
10 + 20 
3 / 5
1 / 3
10 - 20

[image]

べき乗: ^

2 ^ 10

[image]

かっこの内側が先に評価される(評価の優先順位)

:{
1.05 * (10 + 20 + 30)

[image]

整数に関する演算

[image]

関数と関数適用

複数の式を一般化して,「ラムダ 仮引数の並び 関数の本体式」の形で表現したものを関数抽象という (ラムダ抽象ともいう).

関数には引数と帰り値の間に関数関係がある.

[image]

関数適用では,関数抽象の仮引数を,実際の値に束縛し,関数の本体式の評価結果を得ていることになる.

下の例では,関数「(\ 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) 

[image]

値としての関数

[image]

式と値,ファーストクラスオブジェクト

変数を,値に束縛することができる.このとき変数に値が結びついていることに注意. 束縛された変数が,変数名を使って参照される.

let を用いた例を以下に示す.

let foo = 100
let ans = True
let name = "kaneko"

[image]

[image]

特記事項:関数も値 値の型はいろいろ

let foo n = 2 ^ n
foo 10
foo 12

[image]
簡約の過程を示す記号「=>」.左辺は式,右辺は式または値.値はそれ以上簡約できない.

値の種類

データ型

副作用

print による画面表示

[image]

readLn によるデータ入力

[image]

再帰関数

[image]

ghci では,複数行に分けたい場合には :{ と :} で囲む

:{
let
  kaijou 0 = 1
  kaijou n = n * kaijou (n - 1)
:}
kaijou 5

[image]

遅延束縛

[image]