/** * map :: Functor f => (a -> b) -> f a -> f b * * @return mixed|\Closure * * @param callable $transformation * @param Functor $value */ function map(callable $transformation = null, Functor $value = null) { return call_user_func_array(curryN(2, function (callable $transformation, Functor $value) { return $value->map($transformation); }), func_get_args()); }