# `Vibe.Eval.Evaluator`
[🔗](https://github.com/elixir-vibe/vibe/blob/v0.2.3/lib/vibe/eval/evaluator.ex#L1)

Per-session stateful Elixir evaluator process.

# `binding_info`

```elixir
@type binding_info() :: %{
  name: atom(),
  type: atom() | module(),
  bytes: non_neg_integer(),
  preview: String.t()
}
```

# `result`

```elixir
@type result() :: {:ok, Vibe.Eval.Result.t()} | {:error, String.t()}
```

# `bindings`

```elixir
@spec bindings(GenServer.server()) :: [binding_info()]
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `evaluate`

```elixir
@spec evaluate(GenServer.server(), String.t()) :: result()
```

# `forget`

```elixir
@spec forget(GenServer.server(), [atom()]) :: :ok
```

# `reset`

```elixir
@spec reset(GenServer.server()) :: :ok
```

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

---

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