:: *T = T f x=:(T,b) = x the derived result type of f was not essentially unique: f :: .. -> (.T, .a)