Open19
{ 関数型単語帳 : [ TypeScriptで関数型プログラミング ] }
To 関数型 From 命令型
例えば階乗を求めるなら、
- 命令型は 「階乗をどう求めるか」の手順 …制御フロー
- 関数型は 「階乗とは何であるか」の定義 …関数
を記述する。
successor:後者
succ関数は後者が明確に定義されているものを何でもいいから引数として受け取り、その値を返す。
- 整数なら : 後者 = 次に大きい数
- 配列なら : 後者 = 次の要素
head:先頭の要素
tail:先頭を取り除いた残りの部分
last:最後の要素
init:最後の要素を取り除いた残りの部分
take:先頭から指定された数の要素を取り出す
replicate:複製
zip:綴じ合わせ
zip
2つのリストを綴じ合わせて返す
zipWith
2つのリストの各要素に関数を適用すること、2つのリストを結合する
多層的関数
型変数を用いた関数。
高階関数
引数として関数を取ったり、返り値として関数を返したりできる関数。
カリー化関数
常にちょうど一つの引数をとる関数。
部分適用
関数を本来より少ない引数で呼び出すこと。
flip
最初の2つの引数が入れ替わった関数を返す
map
関数をリストの全ての要素に適用して新しいリストを生成する
述語
真理値を返す関数
filter
リストの要素のうち、述語を満たすもののみ残したリストを返す
ラムダ式
1回だけ必要な関数を作るときに使う無名関数。
- 高階関数に渡す関数を作るためだけに使われる