Module Garter_List
include module type of Belt.List;
type t('a) = list('a);
let length: t('a) => int;let size: t('a) => int;let head: t('a) => option('a);let headExn: t('a) => 'a;let tail: t('a) => option(t('a));let tailExn: t('a) => t('a);let add: t('a) => 'a => t('a);let get: t('a) => int => option('a);let getExn: t('a) => int => 'a;let make: int => 'a => t('a);let makeByU: int => Js.Fn.arity1((int => 'a)) => t('a);let makeBy: int => (int => 'a) => t('a);let shuffle: t('a) => t('a);let drop: t('a) => int => option(t('a));let take: t('a) => int => option(t('a));let splitAt: t('a) => int => option((list('a), list('a)));let concat: t('a) => t('a) => t('a);let concatMany: array(t('a)) => t('a);let reverseConcat: t('a) => t('a) => t('a);let flatten: t(t('a)) => t('a);let mapU: t('a) => Js.Fn.arity1(('a => 'b)) => t('b);let map: t('a) => ('a => 'b) => t('b);let zip: t('a) => t('b) => t(('a, 'b));let zipByU: t('a) => t('b) => Js.Fn.arity2(('a => 'b => 'c)) => t('c);let zipBy: t('a) => t('b) => ('a => 'b => 'c) => t('c);let mapWithIndexU: t('a) => Js.Fn.arity2((int => 'a => 'b)) => t('b);let mapWithIndex: t('a) => (int => 'a => 'b) => t('b);let fromArray: array('a) => t('a);let toArray: t('a) => array('a);let reverse: t('a) => t('a);let mapReverseU: t('a) => Js.Fn.arity1(('a => 'b)) => t('b);let mapReverse: t('a) => ('a => 'b) => t('b);let forEachU: t('a) => Js.Fn.arity1(('a => 'b)) => unit;let forEach: t('a) => ('a => 'b) => unit;let forEachWithIndexU: t('a) => Js.Fn.arity2((int => 'a => 'b)) => unit;let forEachWithIndex: t('a) => (int => 'a => 'b) => unit;let reduceU: t('a) => 'b => Js.Fn.arity2(('b => 'a => 'b)) => 'b;let reduce: t('a) => 'b => ('b => 'a => 'b) => 'b;let reduceWithIndexU: t('a) => 'b => Js.Fn.arity3(('b => 'a => int => 'b)) => 'b;let reduceWithIndex: t('a) => 'b => ('b => 'a => int => 'b) => 'b;let reduceReverseU: t('a) => 'b => Js.Fn.arity2(('b => 'a => 'b)) => 'b;let reduceReverse: t('a) => 'b => ('b => 'a => 'b) => 'b;let mapReverse2U: t('a) => t('b) => Js.Fn.arity2(('a => 'b => 'c)) => t('c);let mapReverse2: t('a) => t('b) => ('a => 'b => 'c) => t('c);let forEach2U: t('a) => t('b) => Js.Fn.arity2(('a => 'b => 'c)) => unit;let forEach2: t('a) => t('b) => ('a => 'b => 'c) => unit;let reduce2U: t('b) => t('c) => 'a => Js.Fn.arity3(('a => 'b => 'c => 'a)) => 'a;let reduce2: t('b) => t('c) => 'a => ('a => 'b => 'c => 'a) => 'a;let reduceReverse2U: t('a) => t('b) => 'c => Js.Fn.arity3(('c => 'a => 'b => 'c)) => 'c;let reduceReverse2: t('a) => t('b) => 'c => ('c => 'a => 'b => 'c) => 'c;let everyU: t('a) => Js.Fn.arity1(('a => bool)) => bool;let every: t('a) => ('a => bool) => bool;let someU: t('a) => Js.Fn.arity1(('a => bool)) => bool;let some: t('a) => ('a => bool) => bool;let every2U: t('a) => t('b) => Js.Fn.arity2(('a => 'b => bool)) => bool;let every2: t('a) => t('b) => ('a => 'b => bool) => bool;let some2U: t('a) => t('b) => Js.Fn.arity2(('a => 'b => bool)) => bool;let some2: t('a) => t('b) => ('a => 'b => bool) => bool;let cmpByLength: t('a) => t('a) => int;let cmpU: t('a) => t('a) => Js.Fn.arity2(('a => 'a => int)) => int;let cmp: t('a) => t('a) => ('a => 'a => int) => int;let eqU: t('a) => t('a) => Js.Fn.arity2(('a => 'a => bool)) => bool;let eq: t('a) => t('a) => ('a => 'a => bool) => bool;let hasU: t('a) => 'b => Js.Fn.arity2(('a => 'b => bool)) => bool;let has: t('a) => 'b => ('a => 'b => bool) => bool;let getByU: t('a) => Js.Fn.arity1(('a => bool)) => option('a);let getBy: t('a) => ('a => bool) => option('a);let keepU: t('a) => Js.Fn.arity1(('a => bool)) => t('a);let keep: t('a) => ('a => bool) => t('a);let filter: t('a) => ('a => bool) => t('a);let keepWithIndexU: t('a) => Js.Fn.arity2(('a => int => bool)) => t('a);let keepWithIndex: t('a) => ('a => int => bool) => t('a);let filterWithIndex: t('a) => ('a => int => bool) => t('a);let keepMapU: t('a) => Js.Fn.arity1(('a => option('b))) => t('b);let keepMap: t('a) => ('a => option('b)) => t('b);let partitionU: t('a) => Js.Fn.arity1(('a => bool)) => (t('a), t('a));let partition: t('a) => ('a => bool) => (t('a), t('a));let unzip: t(('a, 'b)) => (t('a), t('b));let getAssocU: t(('a, 'c)) => 'b => Js.Fn.arity2(('a => 'b => bool)) => option('c);let getAssoc: t(('a, 'c)) => 'b => ('a => 'b => bool) => option('c);let hasAssocU: t(('a, 'c)) => 'b => Js.Fn.arity2(('a => 'b => bool)) => bool;let hasAssoc: t(('a, 'c)) => 'b => ('a => 'b => bool) => bool;let removeAssocU: t(('a, 'c)) => 'b => Js.Fn.arity2(('a => 'b => bool)) => t(('a, 'c));let removeAssoc: t(('a, 'c)) => 'b => ('a => 'b => bool) => t(('a, 'c));let setAssocU: t(('a, 'c)) => 'a => 'c => Js.Fn.arity2(('a => 'a => bool)) => t(('a, 'c));let setAssoc: t(('a, 'c)) => 'a => 'c => ('a => 'a => bool) => t(('a, 'c));let sortU: t('a) => Js.Fn.arity2(('a => 'a => int)) => t('a);let sort: t('a) => ('a => 'a => int) => t('a);
let isEmpty: Belt.List.t('a) => bool;let takeExn: Belt.List.t('a) => int => Belt.List.t('a);let dropExn: Belt.List.t('a) => int => Belt.List.t('a);let splitAtExn: Belt.List.t('a) => int => (Belt.List.t('a), Belt.List.t('a));let reduce1U: list('a) => Js.Fn.arity2(('a => 'a => 'a)) => 'a;let reduce1: list('a) => Js.Fn.arity2(('a => 'a => 'a)) => 'a;