In this particular example, there should be a compile-time error, complaining 
that `f` doesn't have a concrete return type and the later cannot be inferred 
from the body of the proc. Before failing, the compiler would have inferred `T` 
to be the type class `string|int`. The code should compile if you remove just 
one of the four push/pop procs.

Adding more procs can always introduce ambiguity in generics and normal code. 
Notice how the code will be ambiguous even if don't use a concept here, but 
instead just make `f` a regular "take all" generic proc. 

Reply via email to