Current section
Files
Jump to
Current section
Files
src/internal/array_bindings.gleam
import gary.{type ErlangArray}
pub type ArrayOption {
Default
Fixed
Size
}
// create arrays
@external(erlang, "array", "new")
pub fn new(options: List(#(ArrayOption, t))) -> ErlangArray(t)
@external(erlang, "array", "new")
pub fn new_with_size(
size: Int,
options: List(#(ArrayOption, t)),
) -> ErlangArray(t)
@external(erlang, "array", "from_list")
pub fn from_list(list: List(t), default: t) -> ErlangArray(t)
@external(erlang, "array", "from_orddict")
pub fn from_orddict(list: List(#(Int, t)), default: t) -> ErlangArray(t)
// create other types from arrays
@external(erlang, "array", "to_list")
pub fn to_list(array: ErlangArray(t)) -> List(t)
@external(erlang, "array", "to_orddict")
pub fn to_orddict(array: ErlangArray(t)) -> List(#(Int, t))
@external(erlang, "array", "sparse_to_list")
pub fn sparse_to_list(array: ErlangArray(t)) -> List(t)
@external(erlang, "array", "sparse_to_orddict")
pub fn sparse_to_orddict(array: ErlangArray(t)) -> List(#(Int, t))
// get array info
@external(erlang, "array", "get")
pub fn get(index: Int, array: ErlangArray(t)) -> t
@external(erlang, "array", "default")
pub fn default(array: ErlangArray(t)) -> t
@external(erlang, "array", "size")
pub fn size(array: ErlangArray(t)) -> Int
@external(erlang, "array", "is_fix")
pub fn is_fix(array: ErlangArray(t)) -> Bool
// modify array content
@external(erlang, "array", "set")
pub fn set(index: Int, value: t, array: ErlangArray(t)) -> ErlangArray(t)
@external(erlang, "array", "reset")
pub fn reset(index: Int, array: ErlangArray(t)) -> ErlangArray(t)
// higher-order array functions
@external(erlang, "array", "map")
pub fn map(f: fn(Int, a) -> b, array: ErlangArray(a)) -> ErlangArray(b)
@external(erlang, "array", "sparse_map")
pub fn sparse_map(f: fn(Int, a) -> b, array: ErlangArray(a)) -> ErlangArray(b)
@external(erlang, "array", "foldr")
pub fn foldr(f: fn(Int, a, b) -> b, acc: b, array: ErlangArray(a)) -> b
@external(erlang, "array", "sparse_foldr")
pub fn sparse_foldr(f: fn(Int, a, b) -> b, acc: b, array: ErlangArray(a)) -> b
@external(erlang, "array", "foldl")
pub fn foldl(f: fn(Int, a, b) -> b, acc: b, array: ErlangArray(a)) -> b
@external(erlang, "array", "sparse_foldl")
pub fn sparse_foldl(f: fn(Int, a, b) -> b, acc: b, array: ErlangArray(a)) -> b
// change the array's properties
@external(erlang, "array", "fix")
pub fn fix(array: ErlangArray(t)) -> ErlangArray(t)
@external(erlang, "array", "relax")
pub fn relax(array: ErlangArray(t)) -> ErlangArray(t)
@external(erlang, "array", "resize")
pub fn resize_to(size: Int, array: ErlangArray(t)) -> ErlangArray(t)
@external(erlang, "array", "resize")
pub fn resize(array: ErlangArray(t)) -> ErlangArray(t)