2006-09-30から1日間の記事一覧

ポイントフリースタイル

関数合成や部分適用を使って、関数を関数で定義するコーディングスタイル 変数が減るのでコードが読みやすくなる 型宣言や関数名をしっかり書かないとわけわからなくなる

部分適用

たとえば、f :: Int -> Int -> Int だとすると、 (f 5) :: Int -> Int 二項演算の場合 セクションと呼ぶ 第二引数(右辺)を渡して第一引数をパラメータ化することもできる。 `` を使えば任意の二項演算に対してこれが使える。 increment n = (+ 1) n -- 「n…

関数合成

(.) :: (b -> c) -> (a -> b) -> (a -> c) (f . g) x ≡ f (g x) f . g . h ≡ f . (g . h) -- 右結合

無名関数

ラムダとして、バックスラッシュ(\)を使う 引数にパターンマッチが使えるが、2つ以上のパターンを順番に試すことはできない {- Haskell -} \x (y:ys) -> x * y (* OCaml *) (* 複数パターンは使えないが複数引数が可能 *) fun x y -> x * y (* 複数引数は使…

高階関数

引数や返り値に関数をとる関数