Groovyで合成関数
http://d.hatena.ne.jp/Kazuhira/20120415/1334486571 によるとgroovyで合成関数ができるらしい。って思ったら青い本にちゃんと書いてあった。
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 336回
- この商品を含むブログ (121件) を見る
7.1. クロージャ関連の新機能のとこ。1.8からの新機能らしい。
そもそも理系でありながら合成関数とか覚えていないが、とある関数の結果を、とある関数に渡す関数を定義できるってことで良いのだろうか?
def twice = { a -> a * 2 } def inc = { b -> b + 1 } assert inc(twice(3)) == 7
を
def twice = { a -> a * 2 } def inc = { b -> b + 1 } def h = inc << twice assert h(3) == 7
と出来る。<<が味噌でtwiceの結果をincに渡すという定義。逆の>>も使える。
assert (inc << twice)(3) == 7
こんな感じで変数に一度うけないでも大丈夫。流れるような関数的な何か的なインタフェースに使えたりするだろうか?