add curry and uncurry.
add scaladoc