# `ExDatalog.Constraints.Type`
[🔗](https://github.com/thanos/ex_datalog/blob/v0.5.0/lib/ex_datalog/constraints/type.ex#L1)

Type predicate constraint implementation for the Constraint behaviour.

Evaluates type-check constraints (`:is_integer`, `:is_binary`, `:is_atom`)
which filter bindings based on the Elixir type of a bound value. These are
unary constraints: only `left` is evaluated, `right` and `result` are `nil`.

# `evaluate`

```elixir
@spec evaluate(
  ExDatalog.IR.Constraint.t(),
  ExDatalog.Engine.Binding.t(),
  ExDatalog.Constraint.Context.t()
) :: {:ok, ExDatalog.Engine.Binding.t()} | :filter
```

Evaluates a type predicate constraint against a binding environment.

Accepts an `IR.Constraint` struct as produced by the compiler. Returns
`{:ok, binding}` (unchanged) when the type check passes, or `:filter`
when it fails or the input variable is unbound.

---

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