Haskell プログラミング入門

サイト内の関連ページ

関連する外部ページ

リファレンスマニュアルの入手先は→ 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

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

値の種類

データ型

Haskell は静的型付け言語であり,すべての式の型はコンパイル時に決定される.型推論により,多くの場合は型を明示しなくてもコンパイラが型を決定する.

型を明示する場合は :: を用いる.例えば x :: Int は変数 x が Int 型であることを示す.

ghci では :type コマンド(略記 :t)で式の型を確認できる.

副作用

副作用とは,計算の過程で外部とのやり取りを行うことである.画面表示やキーボード入力が該当する.

print による画面表示の例を示す.

readLn によるデータ入力の例を示す.

再帰関数

ghci で複数行にわたる定義を入力する場合は :{ と :} で囲む.

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

遅延束縛