algebraic types and handling of incomparable type and value pairs