sig
  val head : ?n:int -> 'a list -> 'a list
  val tail : ?i:int -> 'a list -> 'a list
  val substract : 'a list -> 'a list -> 'a list
  val subset : 'a list -> 'a list -> bool
  val eqset : 'a list -> 'a list -> bool
  val intersection : 'a list -> 'a list -> 'a list
  val foreach : 'a list -> ('-> unit) -> unit
  val uniq : 'a list -> 'a list
  val range : int -> int -> int list
  val interval : int -> int -> int list
  val indexes : 'a list -> int list
  val asFunction : int list -> int -> int
  val select : 'a list -> int list -> 'a list
  val rmindex : 'a list -> int -> 'a list
  val indexSuchThat : ('-> bool) -> 'a list -> int option
  val indexOf : '-> 'a list -> int option
  val firstIndexOf : '-> 'a list -> int option
  val lastIndexOf : '-> 'a list -> int option
  val shuffle : 'a list -> 'a list
  val permute : (int -> int) -> 'a list -> 'a list
  val shuffler : 'a list -> int -> int
  val shuffleIndexes : 'a list -> int list
  val big : ('-> '-> 'a) -> 'a list -> 'a
  val max : 'a list -> 'a
  val min : 'a list -> 'a
  val transpose : 'a list list -> 'a list list
end