Packages

Gleam interface to Erlang sparse arrays

Current section

Files

Jump to
gary src gary@array.erl
Raw

src/gary@array.erl

-module(gary@array).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([create/1, create_fixed_size/2, from_list/2, from_dict/2, to_list/1, to_dict/1, to_keylist/1, to_list_without_defaults/1, to_dict_without_defaults/1, to_keylist_without_defaults/1, map/2, sparse_map/2, fold/3, fold_right/3, sparse_fold/3, sparse_fold_right/3, get_size/1, get_count/1, get_default/1, is_fixed_size/1, set/3, drop/2, get/2, make_fixed/1, make_extensible/1, resize_to_fit/1, set_size/2]).
-export_type([array_error/0]).
-type array_error() :: index_out_of_range | bad_size.
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 38).
-spec create(FPW) -> gary:erlang_array(FPW).
create(Default) ->
array:new([{default, Default}]).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 44).
-spec create_fixed_size(integer(), FPY) -> {ok, gary:erlang_array(FPY)} |
{error, array_error()}.
create_fixed_size(Size, Default) ->
gleam@bool:guard(
Size < 0,
{error, bad_size},
fun() -> {ok, array:new(Size, [{default, Default}])} end
).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 63).
-spec from_list(list(FQC), FQC) -> gary:erlang_array(FQC).
from_list(List, Default) ->
array:from_list(List, Default).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 78).
-spec from_dict(gleam@dict:dict(integer(), FQF), FQF) -> {ok,
gary:erlang_array(FQF)} |
{error, array_error()}.
from_dict(Dict, Default) ->
gleam@bool:guard(
gleam@list:any(gleam@dict:keys(Dict), fun(K) -> K < 0 end),
{error, index_out_of_range},
fun() -> _pipe = Dict,
_pipe@1 = maps:to_list(_pipe),
_pipe@2 = array:from_orddict(_pipe@1, Default),
{ok, _pipe@2} end
).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 105).
-spec to_list(gary:erlang_array(FQL)) -> list(FQL).
to_list(Array) ->
array:to_list(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 111).
-spec to_dict(gary:erlang_array(FQO)) -> gleam@dict:dict(integer(), FQO).
to_dict(Array) ->
_pipe = Array,
_pipe@1 = array:to_orddict(_pipe),
maps:from_list(_pipe@1).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 119).
-spec to_keylist(gary:erlang_array(FQS)) -> list({integer(), FQS}).
to_keylist(Array) ->
array:to_orddict(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 134).
-spec to_list_without_defaults(gary:erlang_array(FQV)) -> list(FQV).
to_list_without_defaults(Array) ->
array:sparse_to_list(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 139).
-spec to_dict_without_defaults(gary:erlang_array(FQY)) -> gleam@dict:dict(integer(), FQY).
to_dict_without_defaults(Array) ->
_pipe = Array,
_pipe@1 = array:sparse_to_orddict(_pipe),
maps:from_list(_pipe@1).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 148).
-spec to_keylist_without_defaults(gary:erlang_array(FRC)) -> list({integer(),
FRC}).
to_keylist_without_defaults(Array) ->
array:sparse_to_orddict(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 188).
-spec map(gary:erlang_array(FRP), fun((integer(), FRP) -> FRR)) -> gary:erlang_array(FRR).
map(Array, Function) ->
array:map(Function, Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 196).
-spec sparse_map(gary:erlang_array(FRT), fun((integer(), FRT) -> FRV)) -> gary:erlang_array(FRV).
sparse_map(Array, Function) ->
array:sparse_map(Function, Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 205).
-spec fold(gary:erlang_array(FRX), FRZ, fun((integer(), FRX, FRZ) -> FRZ)) -> FRZ.
fold(Array, Initial, Function) ->
array:foldl(Function, Initial, Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 215).
-spec fold_right(gary:erlang_array(FSA), FSC, fun((integer(), FSA, FSC) -> FSC)) -> FSC.
fold_right(Array, Initial, Function) ->
array:foldr(Function, Initial, Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 225).
-spec sparse_fold(
gary:erlang_array(FSD),
FSF,
fun((integer(), FSD, FSF) -> FSF)
) -> FSF.
sparse_fold(Array, Initial, Function) ->
array:sparse_foldl(Function, Initial, Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 235).
-spec sparse_fold_right(
gary:erlang_array(FSG),
FSI,
fun((integer(), FSG, FSI) -> FSI)
) -> FSI.
sparse_fold_right(Array, Initial, Function) ->
array:sparse_foldr(Function, Initial, Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 259).
-spec get_size(gary:erlang_array(any())) -> integer().
get_size(Array) ->
array:size(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 264).
-spec get_count(gary:erlang_array(any())) -> integer().
get_count(Array) ->
sparse_fold(Array, 0, fun(_, _, Acc) -> Acc + 1 end).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 269).
-spec get_default(gary:erlang_array(FSR)) -> FSR.
get_default(Array) ->
array:default(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 274).
-spec is_fixed_size(gary:erlang_array(any())) -> boolean().
is_fixed_size(Array) ->
array:is_fix(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 156).
-spec set(gary:erlang_array(FRF), integer(), FRF) -> {ok,
gary:erlang_array(FRF)} |
{error, array_error()}.
set(Array, Index, Item) ->
gleam@bool:guard(
Index < 0,
{error, index_out_of_range},
fun() ->
gleam@bool:guard(
is_fixed_size(Array) andalso (Index >= get_size(Array)),
{error, index_out_of_range},
fun() -> {ok, array:set(Index, Item, Array)} end
)
end
).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 172).
-spec drop(gary:erlang_array(FRK), integer()) -> {ok, gary:erlang_array(FRK)} |
{error, array_error()}.
drop(Array, Index) ->
gleam@bool:guard(
Index < 0,
{error, index_out_of_range},
fun() ->
gleam@bool:guard(
is_fixed_size(Array) andalso (Index >= get_size(Array)),
{error, index_out_of_range},
fun() -> {ok, array:reset(Index, Array)} end
)
end
).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 247).
-spec get(gary:erlang_array(FSJ), integer()) -> {ok, FSJ} |
{error, array_error()}.
get(Array, Index) ->
gleam@bool:guard(
Index < 0,
{error, index_out_of_range},
fun() ->
gleam@bool:guard(
is_fixed_size(Array) andalso (Index >= get_size(Array)),
{error, index_out_of_range},
fun() -> {ok, array:get(Index, Array)} end
)
end
).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 280).
-spec make_fixed(gary:erlang_array(FSV)) -> gary:erlang_array(FSV).
make_fixed(Array) ->
array:fix(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 285).
-spec make_extensible(gary:erlang_array(FSY)) -> gary:erlang_array(FSY).
make_extensible(Array) ->
array:relax(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 292).
-spec resize_to_fit(gary:erlang_array(FTB)) -> gary:erlang_array(FTB).
resize_to_fit(Array) ->
array:resize(Array).
-file("/home/wsl/gleam/gary/src/gary/array.gleam", 298).
-spec set_size(gary:erlang_array(FTE), integer()) -> {ok,
gary:erlang_array(FTE)} |
{error, array_error()}.
set_size(Array, Size) ->
gleam@bool:guard(
Size < 0,
{error, bad_size},
fun() -> {ok, array:resize(Size, Array)} end
).