Programming-in-Haskell-2nd-edition_memo_7
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[プログラミング Haskell 第 2 版 >Programming-in-Haskell-...
*プログラミング Haskell 第 2 版 [#q9ec991c]
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a...
}}
*第7章 高階関数 [#nec426b4]
p.82
***蓄積変数 [#kb30d35a]
「蓄積変数」とは、「accumulator」のこと。
-[[蓄積変数 - Google 検索>https://www.google.com/search?q...
-[[再帰ドリル(2):数値に対する末尾再帰 - あどけない話>htt...
>素朴な再帰を「末尾再帰」(tail recursion)という形に直すと...
末尾再帰の形をした関数とは、分岐の末端の最後で自分自身を...
ループできることを実装している再帰関数は、「引数を増やす...
増やされた引数は&color(red){「蓄積変数」(accumulator)};と...
&color(red){蓄積変数に結果を蓄えていき、最後にそれを返す}...
関数型言語を名乗るプログラミング言語であれば、再帰の末尾...
これを「末尾呼び出しの最適化」(TCO: tail call optimizatio...
***foldl(fold left) [#he51cdd0]
>プレリュードで提供される高階関数 foldl(fold left の略称...
>関数 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 関数合成演算子 [#w142e2c1]
>プレリュードで提供される「(.)」は、二つの関数を合成した...
>この演算子は以下のように定義できます。
#code(haskell){{
(.) :: (b -> c) -> (a -> b) -> (a -> c)
f . g = \x -> f (g x)
}}
***関数合成のが結合則 [#webbbe32]
>適切な型を持つ任意の関数 f、g、hに対し、f . (g . h) = (f...
~
-[訳注]英語では “f composed with g” と読みます。「gと合...
- [訳注]演算子 .で合成できるのは、引数の個数が一つの関...
このため、適用範囲が狭いと思うかもしれません。
しかし、Haskell では部分適用を用いることによって、関数が...
部分適用した関数を合成する例が直後に示されていることに注...
-[訳注]関数合成を用いて関数を定義する形式をポイントフリ...
ポイントとは値のことです。
つまり、引数を用いない形式という意味です。
終了行:
[[プログラミング Haskell 第 2 版 >Programming-in-Haskell-...
*プログラミング Haskell 第 2 版 [#q9ec991c]
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a...
}}
*第7章 高階関数 [#nec426b4]
p.82
***蓄積変数 [#kb30d35a]
「蓄積変数」とは、「accumulator」のこと。
-[[蓄積変数 - Google 検索>https://www.google.com/search?q...
-[[再帰ドリル(2):数値に対する末尾再帰 - あどけない話>htt...
>素朴な再帰を「末尾再帰」(tail recursion)という形に直すと...
末尾再帰の形をした関数とは、分岐の末端の最後で自分自身を...
ループできることを実装している再帰関数は、「引数を増やす...
増やされた引数は&color(red){「蓄積変数」(accumulator)};と...
&color(red){蓄積変数に結果を蓄えていき、最後にそれを返す}...
関数型言語を名乗るプログラミング言語であれば、再帰の末尾...
これを「末尾呼び出しの最適化」(TCO: tail call optimizatio...
***foldl(fold left) [#he51cdd0]
>プレリュードで提供される高階関数 foldl(fold left の略称...
>関数 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 関数合成演算子 [#w142e2c1]
>プレリュードで提供される「(.)」は、二つの関数を合成した...
>この演算子は以下のように定義できます。
#code(haskell){{
(.) :: (b -> c) -> (a -> b) -> (a -> c)
f . g = \x -> f (g x)
}}
***関数合成のが結合則 [#webbbe32]
>適切な型を持つ任意の関数 f、g、hに対し、f . (g . h) = (f...
~
-[訳注]英語では “f composed with g” と読みます。「gと合...
- [訳注]演算子 .で合成できるのは、引数の個数が一つの関...
このため、適用範囲が狭いと思うかもしれません。
しかし、Haskell では部分適用を用いることによって、関数が...
部分適用した関数を合成する例が直後に示されていることに注...
-[訳注]関数合成を用いて関数を定義する形式をポイントフリ...
ポイントとは値のことです。
つまり、引数を用いない形式という意味です。
ページ名: