Except for OCaml and Scala (or any other ML supporting subtyping), where you could simply define type's variance.