first-class_functions.sf 361 B

123456789101112131415161718
  1. #!/usr/bin/ruby
  2. func compose(f,g) {
  3. func (*args) {
  4. f(g(args...));
  5. }
  6. }
  7. var cube = func(a) { a.pow(3) };
  8. var croot = func(a) { a.root(3) };
  9. var flist1 = [Number.method(:sin), Number.method(:cos), cube];
  10. var flist2 = [Number.method(:asin), Number.method(:acos), croot];
  11. flist1.range.each { |i|
  12. say compose(flist1[i], flist2[i])(0.5);
  13. }