It is not a proposal, it is a draft.<p>The new draft improves the contract part. But generic declaration part still looks some verbose. There are many repetitiveness, such as the Map example: <a href="https://github.com/golang/proposal/blob/4a54a00950b56dd0096482d0edae46969d7432a6/design/go2draft-contracts.md#containers" rel="nofollow">https://github.com/golang/proposal/blob/4a54a00950b56dd00964...</a><p><pre><code> func New(type K, V)(compare func(K, K) int) *Map(K, V)
func (m *Map(K, V)) Insert(key K, val V) bool
func (m *Map(K, V)) find(key K) **node(K, V)
func (m *Map(K, V)) Insert(key K, val V) bool
func (m *Map(K, V)) Find(key K) (V, bool)
func (m *Map(K, V)) InOrder() *Iterator(K, V)
</code></pre>
And I didn't find how to write a contract which requires a type must have some specified fields in this draft.