infix 1 @> infixr 2 !!> @@> infix 0 & infix 9 && datatype ('a, 'b) t1 = & of 'a * 'b datatype ('a, 'b) t2 = && of 'a * 'b (* error *) local fun fst x && y = x in end (* defines fst *) local fun fst (x && y) = x in val _ = fst end (* error *) local fun fst x