Module Js.List

Provide utilities for list

type t('a) = list('a);
let length: t('a) => int;
let cons: 'a => t('a) => t('a);
let isEmpty: t('a) => bool;
let hd: t('a) => option('a);
let tl: t('a) => option(t('a));
let nth: t('a) => int => option('a);
let revAppend: t('a) => t('a) => t('a);
let rev: t('a) => t('a);
module Js := Js__.Js_internal
let mapRev: Js.Fn.arity1(('a => 'b)) => t('a) => t('b);
let map: Js.Fn.arity1(('a => 'b)) => t('a) => t('b);
let iter: Js.Fn.arity1(('a => unit)) => t('a) => unit;
let iteri: Js.Fn.arity2((int => 'a => unit)) => t('a) => unit;
let foldLeft: Js.Fn.arity2(('a => 'b => 'a)) => 'a => list('b) => 'a;

Application order is left to right, tail recurisve

let foldRight: Js.Fn.arity2(('a => 'b => 'b)) => list('a) => 'b => 'b;

Application order is right to left tail-recursive.

let flatten: t(t('a)) => t('a);
let filter: Js.Fn.arity1(('a => bool)) => t('a) => t('a);
let filterMap: Js.Fn.arity1(('a => option('b))) => t('a) => t('b);
let countBy: Js.Fn.arity1(('a => bool)) => list('a) => int;
let init: int => Js.Fn.arity1((int => 'a)) => t('a);
let toVector: t('a) => array('a);
let equal: Js.Fn.arity2(('a => 'a => bool)) => list('a) => list('a) => bool;