# `Theoria.Context`
[🔗](https://github.com/elixir-vibe/theoria/blob/main/lib/theoria/context.ex#L1)

Typing context for bound variables.

Bindings are stored nearest-binder first. A binding's type is always expressed
relative to the full current context.

# `binding`

```elixir
@type binding() :: {atom(), Theoria.Term.t()}
```

# `t`

```elixir
@type t() :: %Theoria.Context{bindings: [binding()]}
```

# `fetch`

```elixir
@spec fetch(t(), non_neg_integer()) :: {:ok, binding()} | :error
```

# `new`

```elixir
@spec new() :: t()
```

# `push`

```elixir
@spec push(t(), atom(), Theoria.Term.t()) :: t()
```

# `size`

```elixir
@spec size(t()) :: non_neg_integer()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
