If you require that a single like type applies to all the labels in the
parameter declaration, such that func f(a, b T like int, c, d T2 like
string) means a and be must be like T's instantiating type, and c and d
must be like T2's unstantiating type, then you get that.

If you only require a single like for any type T, something like func
f(in T like int) (out T), then you get the type safety on return.

Of course, this takes you back essentially to contracts, but with an
alternative declaration for the type characteristics.

Maybe it would be possible to use like in contracts in place of the
example-base approach.

On Wed, 2018-10-17 at 14:21 -0700, Andy Balholm wrote:
> I think there are serious issues with your syntax for functions and
> “templates.” For example, there doesn’t seem to be a way to specify
> that two parameters to a function need to be the same type, or that
> the return type will be the same as the parameter. The syntax from
> the official proposal is superior in that regard.
>
> But replacing contracts with “like” definitely sounds like something
> worth investigating.
>
> Andy
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to