type 'a seq = 'a Seq.tWe use the Seq representation of sequences for these functions.
val writeMerge: ('a * 'a -> order) -> 'a seq * 'a seq -> 'a seq -> unit
val writeMergeSerial: ('a * 'a -> order) -> 'a seq * 'a seq -> 'a seq -> unitwriteMerge cmp (s, t) r merges the sorted sequences s and t
in parallel and writes the resulting (sorted) sequence into r.
Requires the input sequences are sorted with respect to the
comparison function cmp (and ensures that the output is, too).
Work: O(|s|+|t|)
Span: polylog(|s| + |t|)
writeMergeSerial is similar, except fully sequential.
val merge: ('a * 'a -> order) -> 'a seq * 'a seq -> 'a seq
val mergeSerial: ('a * 'a -> order) -> 'a seq * 'a seq -> 'a seqThese functions are purely functional versions of the writeMerge and
writeMergeSerial functions, described above. Rather than taking an
output sequence as argument, they instead produce a fresh sequence of
the result.