type 'a listx = Nil of 'a | Cons of ('a * 'a listx) val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b listx -> 'a val hd : 'a listx -> 'a val map : ('a -> 'b) -> 'a listx -> 'b listx val append : 'a listx -> 'a listx -> 'a listx val length : 'a listx -> int val assoc : 'a -> ('a * 'b) listx -> 'b val to_list : 'a listx -> 'a list val from_list : 'a list -> 'a listx val split_nth : int -> 'a listx -> 'a list val max : 'a listx -> 'a val last : 'a listx -> 'a