Id ≡ λx.x をgroovyコードで書いてみる。
// まずは、identity
Id = {|x| x}
println Id(3)
println Id("Hello")
3
Hello
関数(クロージャ)を取り扱う関数(高階関数)の例として、“関数結合(合成)をする関数”を書いてみる。
Comp ≡ λf,g.(λx.g(fx)):
// 結合(合成)
Comp = {|f, g| {|x| g(f(x))}}
F = {|x| x + 1}
G = {|x| 2 * x}
println Comp(F, G) // 値はクロージャ
println Comp(F, G)(2) // 2 * (2 + 1) = 6
lambda$_run_closure7_closure15@2892ca2e
6
(続く、けど午後だね)