A compile-time generated named function that lives in the ruleset module.
Expressions are the only executable part of the IR. The compiler emits them as
public, side-effect-free functions, in the module that used Rete.Ruleset. This lets
them 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. This 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. :__ast__ is compile-time only.