The template parameters of a template implementation were not allowed to
be quantifed types. After thinking over the issue today, I slightly modified the
method used to locate the template implementation for a template instance.
Now you can do
implement(a)
myprint<List(a)> (xs) = ...
val () = myprint<List(int)> (...)
Because locating the template implementation for a template instance is done
*after* the erasure of type indices, the template parameter matching must be exact.
For instance,
implement(a)
myprint<list(a,2)> (xs) = ...
val () = myprint<list(int, 1+1)> (...)
There is NO match here because 1+1 and 2 are *syntactically* different.