function Y($f) { return function() use($f) { return call_user_func_array($f(Y($f)), func_get_args()); }; }