関数プログラミングの雰囲気を感じるために
「関数プログラミングとは」とは
この問はなんのためにあるのだろ?
どのような答が欲しいのか?
何を理解したいのか?
Functional Programming の Functional とは
関数型 vs 関数的
二択であれば、個人的には後者がよい。
「関数型」は "function type"の訳語で使いたい。
Function とは
プログラミング言語Cで、もし、"function"という用語が「機能」と訳されていれば、「関数プログラミングにおいて関数は数学の関数で、云々」なんてこといわずに済んだのか?
あれっ?プログラミング言語におい "function" の用語が使われたのはいつから?
Algolから?
Wikipediaによると
In mathematics, a function from a set
to a set X assigns to each element of X exactly one element of Y . The set Y is called the domain of the function and the set X is called the codomain of the function. Y
Function call より Function application
「関数呼出し」といわず「関数適用」というほうが雰囲気を感じやすい。
〜を返す vs 〜である
「を返す」はprocedualな印象
「である」はdeclarativeな印象
Declarative
「宣言的」より、「叙述的」のほうが雰囲気を感じやすそうではある。
副作用
「副作用」は文(命令)と式の混在する言語において有効な概念であって、
- 文のみ:機械語、アセンブリ言語などの文脈
- 式のみ:Haskellなどの文脈
では、使えない、あるいは、無効な概念。
- 命令と状態 imperative
- 構文と表示 declarative
高階関数
関数
域の型または余域の型が関数型であるような関数を高階関数(higher-order function)という。