プログラミング Haskell 第 2 版

プログラミング Haskell 第 2 版

#html{{

table border="0" cellpadding="5"><tr><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4908686076/vertex9-22/" target="_blank"><img src="https://images-fe.ssl-images-amazon.com/images/I/41Korrd80qL._SL160_.jpg" border="0"></a></td><td> </td><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4908686076/vertex9-22/" target="_blank">プログラミングHaskell 第2版</a><br>Grahum Hutton<br>ラムダノート<br>2019-08-02<br>¥ 3,456</td></tr></table>
}}

第7章 高階関数

p.82

蓄積変数

「蓄積変数」とは、「accumulator」のこと。

foldl(fold left)

プレリュードで提供される高階関数 foldl(fold left の略称)は、演算子 #と蓄積変数 vを引数としてこの再帰の様式を閉じ込めたものです。

関数 foldl自体は再帰を用いて定義できます。

#code(haskell){{
foldl :: (a -> b -> a) -> a -> [b] -> a
foldl f v [] = v
foldl f v (x:xs) = foldl f (f v x) xs
}}

p.83

7.5 関数合成演算子

プレリュードで提供される「(.)」は、二つの関数を合成した関数を返す高階演算子です。

この演算子は以下のように定義できます。

#code(haskell){{
(.) :: (b -> c) -> (a -> b) -> (a -> c)
f . g = \x -> f (g x)
}}

関数合成のが結合則

適切な型を持つ任意の関数 f、g、hに対し、f . (g . h) = (f . g) .hが成り立ちます。



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-28 (水) 22:56:17