use define_method to remove duplicate codes

gist

``` ruby
 %w(+ - /).each do |meth|
    define_method(meth) do |fn, *args|
      -> *args { self[*args].send(meth.to_sym, fn[*args]) }
    end
  end
```