Extensions.ListsThe type of heterogenous lists.
Lists are encoded à la Lisp with as either a constant (the empty list nil) or a pair of a value (the head) and a list (the tail).
Lists are printed using a regular expression types whenever possible.
val tag : Tag.tThe tag used for list type.
cons hd tl returns the type of lists formed by the head hd and the tail tl. The function does not check whether tl is a list.
val nil : Ty.tThe empty list.
val any : Ty.tThe type of all lists.
val any_non_empty : Ty.tThe type of all non-empty lists.
destruct t returns a list [ (hd1, tl1); …; (hdn, tln) ] such that t is equivalent to
\bigcup_{i=1\ldots n}\texttt{cons} ~~\texttt{hd}_i ~~\texttt{tl}_i
destruct' t returns the approximation such that t is equovalent to
\bigcup_{i=1\ldots n} \texttt{hd}_i ~~~\times~~~
\bigcup_{i=1\ldots n} \texttt{tl}_i
where destruct t = [ (hd1, tl1); …; (hdn, tln) ]
val basic_printer_params : Printer.paramstype printer = int -> Prec.assoc -> Stdlib.Format.formatter -> t -> unitval print : printerval printer_params : printer -> Printer.paramsval printer_params' : Printer.params