Functor.FUNCTORModule type for abstract datatypes with a mapping function.
map f is the function that maps values of t by f. The order of arguments is for use in function pipelines as fb = fa |> map (fun a -> (* ... *)).
( let+ ) ma f is map f a. This is a binding operator, and is used as let+ a = ma in f a