# `ExDatalog.IR.Callback`
[🔗](https://github.com/thanos/ex_datalog/blob/v0.5.0/lib/ex_datalog/ir.ex#L150)

An IR callback predicate: an Elixir function invoked during evaluation.

`args` are IR terms resolved by variable name against the binding at
evaluation time. `result` is `nil` for boolean (filter) callbacks, or
`{:var, name}` for value-returning callbacks that bind a result variable.

# `t`

```elixir
@type t() :: %ExDatalog.IR.Callback{
  args: [ExDatalog.IR.ir_term()],
  function: atom(),
  module: module(),
  result: ExDatalog.IR.ir_term() | nil
}
```

# `serialize`

```elixir
@spec serialize(t()) :: map()
```

---

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