Current section
Files
Jump to
Current section
Files
lib/array_list.ex
defmodule FDS.ArrayList do
defstruct [:ral]
def new() do
%__MODULE__{ral: :fds_ralist.new()}
end
end
defimpl Collectable, for: FDS.ArrayList do
def into(%FDS.ArrayList{ral: ral}) do
{ral, &do_into/2}
end
defp do_into(_ral, :halt), do: :ok
defp do_into(ral, :done), do: %FDS.ArrayList{ral: ral}
defp do_into(ral, {:cont, item}), do: :fds_ralist.cons(item, ral)
end
defimpl Enumerable, for: FDS.ArrayList do
def reduce(%FDS.ArrayList{ral: ral}, acc, fun) do
{:done, :fds_ralist.foldl(fun, acc, ral)}
end
def count(%FDS.ArrayList{ral: ral}), do: :fds_ralist.count(ral)
def member?(%FDS.ArrayList{}, _item), do: {:error, @for}
def slice(%FDS.ArrayList{}), do: {:error, @for}
end