A compile-time generated named function that lives in the ruleset module.
Expressions are the only executable part of the IR. They are emitted as public
side-effect-free functions in the module that used Rete.Ruleset, so they can be
captured, compared and shared between rules.
:code is a stable, readable unique id. Two structurally identical conditions in one
module context produce the same code, which is what lets the network share nodes.
:kind fixes the calling convention: :alpha is (fact) -> bindings_map | nil,
:test is (bindings_map) -> boolean, and :join_filter is
(token_bindings, fact_bindings) -> boolean. :fun is nil until the expression is
escaped, and :__ast__ is compile-time only.