

Small functions to functionally augment ruby. - irahul
https://github.com/thoughtnirvana/functional

======
burke
I wrote a similar thing a few months ago.

[https://github.com/stefanpenner/rebinder/blob/master/lib/reb...](https://github.com/stefanpenner/rebinder/blob/master/lib/rebinder.rb)

My syntax was far more sarcastic and less legitimate, however. eg:

    
    
        add = Fixnum.☃.+
        add3 = add.∂(3)
        assert_equal 7, add3.☏(4)
    

The fun bit is that this implementation doesn't actually use lambdas, but
rather (Unbound)Method instances.

------
teoryn
Naive fibonacci is a much more interesting example for memoize than factorial:

    
    
        fib = +lambda {|n| return 1 if n <= 1; fib[n-2] + fib[n-1]}

~~~
irahul
Yes. I added that to tests and README. Except that I have

    
    
        fib = +lambda {|n| return n if n <= 1; fib[n-1] + fib[n-1] }
    

My fibonacci is 0, 1, 1, 2, 3.. and yours is 1, 1, 2, 3... but doesn't make a
difference as far as example goes.

------
phzbOx
What's with the [] notation? Isn't there a way to "overload" the () in ruby?
I.e.

(sqr * inc)(5) ?

~~~
irahul
Welcome to Ruby - Ruby has procs, blocks, lambdas, methods which are similar
yet different.

Blocks aren't objects - when they are converted to objects, they become procs.
Procs are like blocks and lambdas are like methods, but you can't call either
of them with () syntax.

And then there are multiple ways to call them:

    
    
      f.call()
      f[]
      f.()
    

Take your pick.

