lib/makina/types.ex

defmodule Makina.Types do
  @moduledoc "Provides definitions for types common to all Makina models."

  @typedoc "Represents a symbolic var."
  @type symbolic_var() :: {:var, pos_integer()}

  @typedoc "Represents a symbolic call."
  @type symbolic_call() ::
          {:call, atom(), atom(), list()}
          | {:call, atom(), atom(), list(), any()}

  @typedoc "Represents a symbolic expression."
  @type symbolic_expr() :: symbolic_var() | symbolic_call()

  @typedoc "Represents a PBT generator."
  @type generator(a) :: a | any()
end