Haskell入門
Haskellの処理系GHCのインストール(Debian系Linuxでの手順)
$ sudo apt install ghc
バージョン確認
$ ghc -v
対話モード(GHCi)の起動
$ ghci
対話モードの終了
Prelude> :q Leaving GHCi.
以下、対話モードで実行します。
Prelude> 1 + 2 3 Prelude> 3 - 2 1 Prelude> 2 * 3 6 Prelude> 1 + 2 * 3 7 Prelude> (1 + 2) * 3 9 Prelude> 3 / 2 1.5 整数の割り算 Prelude> div 3 2 1 割り算の余り Prelude> mod 5 3 2
論理演算
AND Prelude> True && True True Prelude> True && False False OR Prelude> True || False True Prelude> False || False False Prelude> not False True Prelude> 1 == 1 True Prelude> 1 /= 2 True Prelude> 2 > 1 True
後者を返す関数
Prelude> succ 0 1 Prelude> succ 1 2 Prelude> succ 2 3 マイナスの数を与える場合は括弧をつけないといけないらしい Prelude> succ (-3) -2 Prelude> succ 'a' 'b' Prelude> succ 'b' 'c' Prelude> succ 'z' '{'
文字からそれに対応する文字コードを取得する
Prelude> Data.Char.ord 'a' 97 Prelude> Data.Char.ord 'b' 98 Prelude> Data.Char.ord 'z' 122 Prelude> Data.Char.ord '{' 123 Prelude> Data.Char.chr 97 'a'
小さいものを返す関数min
大きいものを返す関数max
Prelude> min 1 2 1 Prelude> min 1 (-1) -1 Prelude> max 1 2 2 Prelude> max 'a' 'b' 'b'
関数の定義
ファイルのロード
下記のコードをファイル「test.hs」に保存する
add1 x = x + 1
「test.hs」があるディレクトリに移動して、GHCiを起動する
下記のコマンドで「test.hs」をロードする
Prelude> :l test.hs [1 of 1] Compiling Main ( test.hs, interpreted ) Ok, one module loaded. *Main>
関数「add1」を実行する
*Main> add1 0 1 *Main> add1 1 2 *Main> add1 (-2) -1
if文
例として、
引数xが偶数ならば、x/2を返し、
奇数ならば、3x+1を返す関数
collatzを作成する。
collatz x = if (mod x 2) == 0 then div x 2 else x * 3 + 1
*Main> collatz 1 4 *Main> collatz 2 1 *Main> collatz 3 10 *Main> collatz 4 2 *Main> collatz 5 16