の続きです。 もうちょっと関数合成しがいのある書き方を思いつきました。
fizz = -> x {[x, ('Fizz' if x % 3 == 0)]} buzz = -> (x) {[x[0], x[0] % 5 == 0 ? "#{x[1]}Buzz" : x[1]]} filter = -> (x) {x[1] || x[0]} do_fizzbuzz = filter << buzz << fizz (1..15).each {|n| p do_fizzbuzz.call(n)}
fizzに変換する関数とbuzzに変換する関数を組み合わせるとfizzbuzzになるのは、ちょっと関数を合成している感があります。