small bug fixed
adopt tail recursion in function `uncurry`