Why specializing a generic function explicitly is not allowed?

Viewed 2672

In Swift, one should use type of parameters or return value to implicitly specialize a generic function. The problem is, when I call function like this:

func serialize<T>(continuation: GenericWithLongName<T, NSError> -> Void) -> Void 

I cannot just write

serialize<SomeType> {
    obj in 
    ...
}

It should be

serialize {
    (obj: GenericWithLongName<SomeType, NSError>) -> Void in
    ...
}

which looks painful.

It seems this "feature" exists for a long time. Is it a design decision? Is there any negative implication from allowing explicitly specialization?

And is there any way to make code above neat and clean without refactoring that generic class?

1 Answers
Related