Javaのラムダ式が登場して久しいですが、そもそもラムダってなんだろう?と思っていました ラムダ式は関数型言語(関数型プログラミング)から来ているとのことで 純粋関数型言語のHaskellを知りました
Haskellはどんな言語か
Haskell 基本構文のまとめ Javaなどの命令型言語とくらべて、こんなことにびっくりしました - 変数は再代入できない - final変数しかない - 変数で「計算結果を保持しておく」ことはしない - 型推論 - コンパイラーが数値・文字列など自動で判断する - 変数の前にStringなど書かなくても良い - 型の不一致はコンパイル時に検出してくれるので例外が発生しない - 遅延実行 - コードを上から実行するのではなく、値が必要になった時点で処理を実行する - Javaで1ステップずつデバッグしてきたので、Haskellデバッグどうするの?って思う
Haskellの関数はすごいことしてるらしい
関数の引数は1つしか引数をとらない
max 5 10
で2つの引数のうち大きい数(10)が返されるけど、引数は1つしかとってないの?
Haskellの中ではこんな風に関数が実行されているようです
max 5 10
↓
引数を1つとりmax 5
を実行
↓
引数を1つとって大きい数を返す関数が返される
↓
引数を1つとって大きい数を返す関数に10が渡される
引数が複数あるように見えるけど「引数を1つとって関数を返す」ことをしています(カリー化)
Haskellおもしろい!
ちょっと調べただけで命令型言語とこんなに違う!新しい世界って感じです 早速、自分でもコーディングしてみたい!