トップページ -> 情報工学,情報スキルの教材 -> Haskell を使ってみる -> Haskell 入門
[サイトマップへ]  

Haskell 入門(式と評価結果)

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

インタプリタの起動

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

ghci

評価

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

四則演算

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

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

べき乗: ^

2 ^ 10

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

:{
1.05 * (10 + 20 + 30)

整数に関する演算

関数と関数適用

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

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

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

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

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

値の種類

データ型

副作用

print による画面表示

readLn によるデータ入力

再帰関数

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

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

遅延束縛

正格 x = 1 / 0 カリー化 (map f (list 1 2 3)) let f x = x * 1.05 を使ってカリー化