sig
  type 'a t = 'a list
  val length : 'Belt_List.t -> int
  val size : 'Belt_List.t -> int
  val head : 'Belt_List.t -> 'a option
  val headExn : 'Belt_List.t -> 'a
  val tail : 'Belt_List.t -> 'Belt_List.t option
  val tailExn : 'Belt_List.t -> 'Belt_List.t
  val add : 'Belt_List.t -> '-> 'Belt_List.t
  val get : 'Belt_List.t -> int -> 'a option
  val getExn : 'Belt_List.t -> int -> 'a
  val make : int -> '-> 'Belt_List.t
  val makeByU : int -> (int -> 'a [@bs]) -> 'Belt_List.t
  val makeBy : int -> (int -> 'a) -> 'Belt_List.t
  val shuffle : 'Belt_List.t -> 'Belt_List.t
  val drop : 'Belt_List.t -> int -> 'Belt_List.t option
  val take : 'Belt_List.t -> int -> 'Belt_List.t option
  val splitAt : 'Belt_List.t -> int -> ('a list * 'a list) option
  val concat : 'Belt_List.t -> 'Belt_List.t -> 'Belt_List.t
  val concatMany : 'Belt_List.t array -> 'Belt_List.t
  val reverseConcat : 'Belt_List.t -> 'Belt_List.t -> 'Belt_List.t
  val flatten : 'Belt_List.t Belt_List.t -> 'Belt_List.t
  val mapU : 'Belt_List.t -> ('-> 'b [@bs]) -> 'Belt_List.t
  val map : 'Belt_List.t -> ('-> 'b) -> 'Belt_List.t
  val zip : 'Belt_List.t -> 'Belt_List.t -> ('a * 'b) Belt_List.t
  val zipByU :
    'Belt_List.t ->
    'Belt_List.t -> ('-> '-> 'c [@bs]) -> 'Belt_List.t
  val zipBy :
    'Belt_List.t -> 'Belt_List.t -> ('-> '-> 'c) -> 'Belt_List.t
  val mapWithIndexU :
    'Belt_List.t -> (int -> '-> 'b [@bs]) -> 'Belt_List.t
  val mapWithIndex : 'Belt_List.t -> (int -> '-> 'b) -> 'Belt_List.t
  val fromArray : 'a array -> 'Belt_List.t
  val toArray : 'Belt_List.t -> 'a array
  val reverse : 'Belt_List.t -> 'Belt_List.t
  val mapReverseU : 'Belt_List.t -> ('-> 'b [@bs]) -> 'Belt_List.t
  val mapReverse : 'Belt_List.t -> ('-> 'b) -> 'Belt_List.t
  val forEachU : 'Belt_List.t -> ('-> 'b [@bs]) -> unit
  val forEach : 'Belt_List.t -> ('-> 'b) -> unit
  val forEachWithIndexU : 'Belt_List.t -> (int -> '-> 'b [@bs]) -> unit
  val forEachWithIndex : 'Belt_List.t -> (int -> '-> 'b) -> unit
  val reduceU : 'Belt_List.t -> '-> ('-> '-> 'b [@bs]) -> 'b
  val reduce : 'Belt_List.t -> '-> ('-> '-> 'b) -> 'b
  val reduceWithIndexU :
    'Belt_List.t -> '-> ('-> '-> int -> 'b [@bs]) -> 'b
  val reduceWithIndex : 'Belt_List.t -> '-> ('-> '-> int -> 'b) -> 'b
  val reduceReverseU : 'Belt_List.t -> '-> ('-> '-> 'b [@bs]) -> 'b
  val reduceReverse : 'Belt_List.t -> '-> ('-> '-> 'b) -> 'b
  val mapReverse2U :
    'Belt_List.t ->
    'Belt_List.t -> ('-> '-> 'c [@bs]) -> 'Belt_List.t
  val mapReverse2 :
    'Belt_List.t -> 'Belt_List.t -> ('-> '-> 'c) -> 'Belt_List.t
  val forEach2U :
    'Belt_List.t -> 'Belt_List.t -> ('-> '-> 'c [@bs]) -> unit
  val forEach2 : 'Belt_List.t -> 'Belt_List.t -> ('-> '-> 'c) -> unit
  val reduce2U :
    'Belt_List.t ->
    'Belt_List.t -> '-> ('-> '-> '-> 'a [@bs]) -> 'a
  val reduce2 :
    'Belt_List.t -> 'Belt_List.t -> '-> ('-> '-> '-> 'a) -> 'a
  val reduceReverse2U :
    'Belt_List.t ->
    'Belt_List.t -> '-> ('-> '-> '-> 'c [@bs]) -> 'c
  val reduceReverse2 :
    'Belt_List.t -> 'Belt_List.t -> '-> ('-> '-> '-> 'c) -> 'c
  val everyU : 'Belt_List.t -> ('-> bool [@bs]) -> bool
  val every : 'Belt_List.t -> ('-> bool) -> bool
  val someU : 'Belt_List.t -> ('-> bool [@bs]) -> bool
  val some : 'Belt_List.t -> ('-> bool) -> bool
  val every2U :
    'Belt_List.t -> 'Belt_List.t -> ('-> '-> bool [@bs]) -> bool
  val every2 : 'Belt_List.t -> 'Belt_List.t -> ('-> '-> bool) -> bool
  val some2U :
    'Belt_List.t -> 'Belt_List.t -> ('-> '-> bool [@bs]) -> bool
  val some2 : 'Belt_List.t -> 'Belt_List.t -> ('-> '-> bool) -> bool
  val cmpByLength : 'Belt_List.t -> 'Belt_List.t -> int
  val cmpU :
    'Belt_List.t -> 'Belt_List.t -> ('-> '-> int [@bs]) -> int
  val cmp : 'Belt_List.t -> 'Belt_List.t -> ('-> '-> int) -> int
  val eqU :
    'Belt_List.t -> 'Belt_List.t -> ('-> '-> bool [@bs]) -> bool
  val eq : 'Belt_List.t -> 'Belt_List.t -> ('-> '-> bool) -> bool
  val hasU : 'Belt_List.t -> '-> ('-> '-> bool [@bs]) -> bool
  val has : 'Belt_List.t -> '-> ('-> '-> bool) -> bool
  val getByU : 'Belt_List.t -> ('-> bool [@bs]) -> 'a option
  val getBy : 'Belt_List.t -> ('-> bool) -> 'a option
  val keepU : 'Belt_List.t -> ('-> bool [@bs]) -> 'Belt_List.t
  val keep : 'Belt_List.t -> ('-> bool) -> 'Belt_List.t
  val filter : 'Belt_List.t -> ('-> bool) -> 'Belt_List.t
  val keepWithIndexU :
    'Belt_List.t -> ('-> int -> bool [@bs]) -> 'Belt_List.t
  val keepWithIndex : 'Belt_List.t -> ('-> int -> bool) -> 'Belt_List.t
  val filterWithIndex :
    'Belt_List.t -> ('-> int -> bool) -> 'Belt_List.t
  val keepMapU : 'Belt_List.t -> ('-> 'b option [@bs]) -> 'Belt_List.t
  val keepMap : 'Belt_List.t -> ('-> 'b option) -> 'Belt_List.t
  val partitionU :
    'Belt_List.t -> ('-> bool [@bs]) -> 'Belt_List.t * 'Belt_List.t
  val partition :
    'Belt_List.t -> ('-> bool) -> 'Belt_List.t * 'Belt_List.t
  val unzip : ('a * 'b) Belt_List.t -> 'Belt_List.t * 'Belt_List.t
  val getAssocU :
    ('a * 'c) Belt_List.t -> '-> ('-> '-> bool [@bs]) -> 'c option
  val getAssoc :
    ('a * 'c) Belt_List.t -> '-> ('-> '-> bool) -> 'c option
  val hasAssocU :
    ('a * 'c) Belt_List.t -> '-> ('-> '-> bool [@bs]) -> bool
  val hasAssoc : ('a * 'c) Belt_List.t -> '-> ('-> '-> bool) -> bool
  val removeAssocU :
    ('a * 'c) Belt_List.t ->
    '-> ('-> '-> bool [@bs]) -> ('a * 'c) Belt_List.t
  val removeAssoc :
    ('a * 'c) Belt_List.t ->
    '-> ('-> '-> bool) -> ('a * 'c) Belt_List.t
  val setAssocU :
    ('a * 'c) Belt_List.t ->
    '-> '-> ('-> '-> bool [@bs]) -> ('a * 'c) Belt_List.t
  val setAssoc :
    ('a * 'c) Belt_List.t ->
    '-> '-> ('-> '-> bool) -> ('a * 'c) Belt_List.t
  val sortU : 'Belt_List.t -> ('-> '-> int [@bs]) -> 'Belt_List.t
  val sort : 'Belt_List.t -> ('-> '-> int) -> 'Belt_List.t
end