pub fn append(x: ZList(ZList(a))) -> ZList(a)
pub fn cartesian(x: ZList(a), y: ZList(a)) -> ZList(a)
pub fn count(x: ZList(a)) -> Int
pub fn drop(x: Int, y: ZList(a)) -> ZList(a)
pub fn dropwhile(x: fn(a) -> Bool, y: ZList(a)) -> ZList(a)
pub fn expand(x: ZList(a)) -> List(a)
pub fn filter(x: fn(a) -> Bool, y: ZList(a)) -> ZList(a)
pub fn foldl(x: fn(a, b) -> b, y: b, z: ZList(a)) -> b
pub fn foreach(x: fn(a) -> b, y: ZList(a)) -> Nil
pub fn generate(x: ZList(a), y: fn(a) -> ZList(b)) -> ZList(b)
pub fn map(x: fn(a) -> b, y: ZList(a)) -> ZList(b)
pub fn merge(x: ZList(a), y: ZList(a)) -> ZList(a)
pub fn new_1(x: List(a), y: fn() -> List(a)) -> ZList(a)
pub fn new_2(x: ZList(a), y: fn() -> ZList(a)) -> ZList(a)
pub fn print(x: ZList(a)) -> Nil
pub fn recurrent_2(x: a, y: fn(a) -> a) -> ZList(a)
pub fn recurrent_3(
x: a,
y: b,
z: fn(a, b) -> #(a, b),
) -> ZList(a)
pub fn scroll(x: Int, y: ZList(a)) -> #(List(a), ZList(a))
pub fn seq(x: Int, y: Int, z: Int) -> ZList(Int)
pub fn splitwith(
x: fn(a) -> Bool,
y: ZList(a),
) -> #(List(a), ZList(a))
pub fn take(x: Int, y: ZList(a)) -> ZList(a)
pub fn takewhile(x: fn(a) -> Bool, y: ZList(a)) -> ZList(a)
pub fn unique_1(x: ZList(a)) -> ZList(a)
pub fn unique_2(x: fn(a, a) -> Bool, y: ZList(a)) -> ZList(a)
pub fn zip(x: ZList(a), y: ZList(b)) -> ZList(#(a, b))
pub fn ziph(x: ZList(a), y: ZList(b)) -> ZList(#(a, b))