предположим, у меня есть тип, определенный как
type value =
None
| Int of int
| Float of float
| Complex of Complex.t
| String of string
| Char of char
| Bool of bool
, и я хочу работать с Sets
из этих значений.Из того, что я понял, я должен использовать функтор для конкретизации модуля Set
с конкретным типом и связанным с ним порядком.
Как мне это сделать в этом примере?Поскольку value
нельзя использовать непосредственно внутри функтора Set.Make
?
Тогда, конечно, мне нужно иметь возможность полностью упорядочить эти значения, поэтому я должен придумать что-то вроде задания предопределенного порядка для различных типов.и затем упорядочить их по их действительному значению ... я прав?
Так, например, я могу решить иметь Int of int < Float of int
и Int x < Int y
, если x < y
.Это практический подход к тому, чего я пытаюсь достичь?