pub fn a(name: String) -> Atom
pub fn against(query: Query(a, b), row: c) -> Result(d, Nil)
pub fn bind(query: Query(a, b), with shape: c) -> Query(a, b)
pub fn filter(
query: Query(a, b),
with condition: c,
) -> Query(a, b)
pub fn map(query: Query(a, b), with shape: c) -> Query(a, b)
pub fn new() -> Query(a, b)
pub fn r(name: String, tuple: a) -> b
pub fn t1(a: a) -> #(#(a))
pub fn t2(a: a, b: b) -> #(#(a, b))
pub fn t3(a: a, b: b, c: c) -> #(#(a, b, c))
pub fn t4(a: a, b: b, c: c, d: d) -> #(#(a, b, c, d))
pub fn t5(a: a, b: b, c: c, d: d, e: e) -> #(#(a, b, c, d, e))
pub fn v(at position: Int) -> Atom
pub fn validate(
query: Query(a, b),
) -> Result(Query(a, b), List(String))