[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Xavier Leroy <Xavier.Leroy@i...> |
| Subject: | Re: [Caml-list] Pervasives.compare output type |
> Pervasives.compare currently returns an int. Intuitively it would be > more appropriate for it to return a union type such as the following. > type comparison_result = Less | Equals | Greater > What are the reasons behind the present design choice? It's a historical error. If I were to do it again, I'd use a sum type such as your "comparison_result". The current solution allows to use (-) (integer subtraction) as the comparison predicate for *small* integer arguments, but this doesn't work as a general integer comparison because of subtraction wrapping around for large arguments. So, there are really no benefits to encode the result of a 3-way comparison as an "int". - Xavier Leroy