> I would rather wait for generics and possibly make Closure a generic type. > > — Rob
Hi Rob, I don't think generics help here. PHP doesn't have generics at all yet, and realistically they're at least a couple of years away. But even once they land, they wouldn't solve this. Making `Closure` generic (e.g., say `Closure<Input, Output>` ) would require `Input` to be variadic to stand in for a closure's parameter list, and variadic generics are a different beast entirely. They've never appeared in any proposal, they don't really make sense for a number of reasons, and if they were ever added at all, it would be years after generics themselves. So "wait for generics" here effectively means waiting indefinitely. And arity aside, a generic `Closure<...>` still couldn't express which arguments are required versus optional, nor type a closure that is itself generic. A dedicated syntax like `fn<T>(T, string=): T` handles all of it cleanly: - The generic parameter ( `<T>` ) - Te required and optional arguments ( `=` marker ) - The return type ( following `:` ) Cheers, Seifeddine
