add currying
add Rational