teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

文章訂正

2017/03/14 16:00

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  おっしゃるとおりです。List#replaceAllの引数はUnaryOperatorですが、このインターフェースには抽象メソッド一つと3つほどのデフォルトメソッドが定義されてますがラムダ式で表現できるのは抽象メソッドのみです。
4
4
 
5
- Javaを離れて計算機科学一般においてラムダ式が何を意味するかと言えば「単一の関数を表記するためのもの」と捉えることができると思います。自分はLispで初めてラムダ計算やラムダ式という概念を知りましたいまや多くの言語でラムダ式と呼ばれる関数表記がおなじみなった感がありますが、いずれの言語でも「単一の関数の実装」であることは同じだと思います。
5
+ Javaを離れて計算機科学一般においてラムダ式が何を意味するかと言えば「単一の関数を表記するためのもの」と捉えることができると思います。古くはLispなどにありました今日は色々な言語に見られますが、いずれの言語でも「単一の関数の実装」であることは同じだと思います。
6
6
 
7
7
  Javaでは「関数」という新たな言語仕様を導入するのではなく「単一の抽象メソッドのみを持つinterface」を「関数のインターフェースの定義」と見做してそれを実装する具象クラス(およびそのインスタンシエーション)を行うことで、いわゆる第一級関数の実体を表現できるようにしたのでしょう。そうすることで言語仕様を大きく変更しなくて済むため都合がよかったのだと思います。
8
8