src/gleeps.erl

-module(gleeps).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gleeps.gleam").
-export([new/2]).
-export_type([world_state/0, action/0, runtime/1]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

-type world_state() :: world_state.

-type action() :: any().

-type runtime(I) :: {runtime,
        fun(() -> I),
        fun((I, world_state()) -> {I, list(action())})}.

-file("src/gleeps.gleam", 22).
?DOC(" creates a new runtime\n").
-spec new(fun(() -> J), fun((J, world_state()) -> {J, list(action())})) -> runtime(J).
new(Init, Loop) ->
    {runtime, Init, Loop}.