Default methods within type classes are not visited within the verify pass, meaning that potential problems are not detected:
let id x = x
class bifunctor 'f
val bimap : ('a -> 'a₂) -> ('b -> 'b₂) -> 'f 'a 'b -> 'f 'a₂ 'b₂
val first : ('a -> 'a₂) -> 'f 'a 'b -> 'f 'a₂ 'b
let first f = let unused = () (* Should warn but doesn't *)
bimap f id
More seriously, this will not reject ill-formed terms such as let x = x within default methods.
Default methods within type classes are not visited within the verify pass, meaning that potential problems are not detected:
More seriously, this will not reject ill-formed terms such as
let x = x
within default methods.