lib/type_check/default_overrides/enumerable.ex
defmodule TypeCheck.DefaultOverrides.Enumerable do
use TypeCheck
@type! acc() :: {:cont, term()} | {:halt, term()} | {:suspend, term()}
@type! continuation() :: (acc() -> result())
@type! reducer() :: (element :: term(), current_acc :: acc() -> updated_acc :: acc())
@type! result() ::
{:done, term()}
| {:halted, term()}
| {:suspended, term(), continuation()}
@type! slicing_fun() :: (start :: non_neg_integer(), length :: pos_integer() -> [term()])
@type! t() :: impl(Elixir.Enumerable)
end