currying.sf 341 B

123456789101112131415161718192021222324252627
  1. #!/usr/bin/ruby
  2. #
  3. ## Using a generic curry function:
  4. #
  5. func curry(f, *args1) {
  6. func (*args2) {
  7. f(args1..., args2...);
  8. }
  9. }
  10. func add(a, b) {
  11. a + b
  12. }
  13. var adder = curry(add, 1);
  14. say adder(3); #=>4
  15. #
  16. ## Another way, using lazy methods:
  17. #
  18. var adder2 = 1.method(:add);
  19. say adder2(3); #=> 4