package tablecloth-native
Module Tablecloth.Comparator
Comparator provide a way for custom data structures to be used with Maps and Sets
Say we have a module Book which we want to be able to create a Set of
module Book = struct
type t = {
isbn: string;
title: string;
}
let compare bookA bookB =
String.compare bookA.isbn bookb.isbn
endFirst we need to make our module conform to the S signature.
This can be done by using the Make functor.
module Book = struct
type t = {
isbn: string;
title: string;
}
let compare bookA bookB =
String.compare bookA.isbn bookb.isbn
include Comparator.Make(struct
type nonrec t = t
let compare = compare
end)
endNow we can create a Set of books
Set.fromList (module Book) [
{ isbn="9788460767923"; title="Moby Dick or The Whale" }
]A type alias that is useful typing functions which accept first class modules like Map.empty or Set.fromArray