Haskell

Haskell を使ってみる 9 (高階関数1)

前回の続き Haskell を使ってみる 8 (再帰) - kntmr-blog 引数に取ったり返り値として返せる関数を高階関数と呼ぶ。 カリー化関数 Haskell のすべての関数は引数を1つだけ取る。複数の引数を受け取るような関数はカリー化されている。関数を本来より少ない引…

Haskell を使ってみる 8 (再帰)

前回の続き Haskell を使ってみる 7 (ガード) - kntmr-blog 再帰 関数を再帰的に定義する場合は問題を同じ種類のより小さな問題に分解する。再帰を使わずに定義できる問題を基底部と呼ぶ。再帰を実装する場合は基底部から考える。 maximum' :: (Ord a) => [a…

Haskell を使ってみる 7 (ガード)

前回の続き Haskell を使ってみる 6 (パターンマッチ) - kntmr-blog ガード ガードは引数の値が満たす性質で処理を分岐させるときに使う。パイプ文字 (|) と条件式と関数本体を組み合わせて記述する。(パターンは引数の構造で条件を分岐させるもの) -- 階乗…

Haskell を使ってみる 6 (パターンマッチ)

前回の続き Haskell を使ってみる 5 (型) - kntmr-blog パターンマッチ パターンマッチは、データ型が従うべきパターンを指定してそのパターンに従ってデータを分解するために使う。 -- パターンマッチと再帰で n の階乗を求める関数 factorial :: Int -> In…

Haskell を使ってみる 5 (型)

前回の続き Haskell を使ってみる 4 (タプル) - kntmr-blog 型宣言 式の型は :t コマンドで調べることができる。:: は xxx の型を持つことを意味する。 Prelude> :t 'a' -- Char 型 'a' :: Char Prelude> :t "Hello" -- Char 型のリスト "Hello" :: [Char] P…

Haskell を使ってみる 4 (タプル)

前回の続き Haskell を使ってみる 3 (リスト内包表記) - kntmr-blog タプル タプルは、複数の異なる型の要素を格納することができる。タプルは括弧で囲む。 Prelude> (1,3) (1,3) Prelude> (1,'a',"Hello") (1,'a',"Hello") サイズ2のタプルはペアと呼ばれる…

Haskell を使ってみる 3 (リスト内包表記)

前回の続き Haskell を使ってみる 2 (リストの操作) - kntmr-blog レンジ 列挙できる要素の組み合わせでリストを作成することができる。 Prelude> [1..10] [1,2,3,4,5,6,7,8,9,10] Prelude> ['a'..'z'] "abcdefghijklmnopqrstuvwxyz" ステップを指定してリス…

Haskell を使ってみる 2 (リストの操作)

前回の続き Haskell を使ってみる 1 (導入) - kntmr-blog リスト同士の連結 ++ 演算子は2つのリストを引数に取る。第1引数に指定したリストは最後まで走査されるため、要素数が大きいリストを扱う場合は注意が必要。 Prelude> [1,2,3,4] ++ [5,6,7,8] [1,2,3…

Haskell を使ってみる 1 (導入)

前提 OS X Yosemite (10.10.5) Haskell Platform 8.0.1 for Mac OS X Haskell Platform for OS X インストール Download Haskell Platform For OS X Download Full (64 bit) をクリックしてインストーラをダウンロード インストーラを起動してインストール …