let filter = |a: Array<'a>, f: fn('a) -> bool throws 'e| -> Array<'a> throws 'e 'array_filter;
let filter_map = |a: Array<'a>, f: fn('a) -> Option<'b> throws 'e| -> Array<'b> throws 'e 'array_filter_map;
let map = |a: Array<'a>, f: fn('a) -> 'b throws 'e| -> Array<'b> throws 'e 'array_map;
let flat_map = |a: Array<'a>, f: fn('a) -> ['b, Array<'b>] throws 'e| -> Array<'b> throws 'e 'array_flat_map;
let fold = |a: Array<'a>, init: 'b, f: fn('b, 'a) -> 'b throws 'e| -> 'b throws 'e 'array_fold;
let group = |v: 'a, f: fn(i64, 'a) -> bool throws 'e| -> Array<'a> throws 'e 'array_group;
let init = |n: i64, f: fn(i64) -> 'a throws 'e| -> Array<'a> throws 'e 'array_init;
let iter = |a: Array<'a>| -> 'a 'array_iter;
let iterq = |#clock: Any, a: Array<'a>| -> 'a 'array_iterq;
let len = |a: Array<'a>| -> i64 'array_len;
let concat = |x: Array<'a>, @args: Array<'a>| -> Array<'a> 'array_concat;
let push = |a: Array<'a>, @args: 'a| -> Array<'a> 'array_push_back;
let push_front = |a: Array<'a>, @args: 'a| -> Array<'a> 'array_push_front;
let window = |#n: i64, a: Array<'a>, @args: 'a| -> Array<'a> 'array_window;
let flatten = |a: Array<Array<'a>>| -> Array<'a> 'array_flatten;
let find = |a: Array<'a>, f: fn('a) -> bool throws 'e| -> Option<'a> throws 'e 'array_find;
let find_map = |a: Array<'a>, f: fn('a) -> Option<'b> throws 'e| -> Option<'b> throws 'e 'array_find_map;
let sort = |#dir: Direction = `Ascending, #numeric: bool = false, a: Array<'a>| -> Array<'a> 'array_sort;
let enumerate = |a: Array<'a>| -> Array<(i64, 'a)> 'array_enumerate;
let zip = |a0: Array<'a>, a1: Array<'b>| -> Array<('a, 'b)> 'array_zip;
let unzip = |a: Array<('a, 'b)>| -> (Array<'a>, Array<'b>) 'array_unzip;