pub struct Unifier;Expand description
Unification algorithm for pattern matching
The Unifier provides algorithms for:
- Unifying two expressions with variable bindings
- Matching expressions against facts
- Evaluating expressions with variable substitution
Implementations§
Source§impl Unifier
impl Unifier
Sourcepub fn unify(
left: &Expression,
right: &Expression,
bindings: &mut Bindings,
) -> Result<bool>
pub fn unify( left: &Expression, right: &Expression, bindings: &mut Bindings, ) -> Result<bool>
Unify two expressions with variable bindings
This is the core unification algorithm. It attempts to make two expressions equal by binding variables to values.
§Returns
Ok(true)if unification succeededOk(false)if expressions cannot be unifiedErr(_)if there’s a binding conflict
Sourcepub fn match_expression(
expr: &Expression,
facts: &Facts,
bindings: &mut Bindings,
) -> Result<bool>
pub fn match_expression( expr: &Expression, facts: &Facts, bindings: &mut Bindings, ) -> Result<bool>
Match expression against facts and extract bindings
This evaluates an expression against the current facts, binding any variables to their matched values.
Sourcepub fn evaluate_with_bindings(
expr: &Expression,
facts: &Facts,
bindings: &Bindings,
) -> Result<Value>
pub fn evaluate_with_bindings( expr: &Expression, facts: &Facts, bindings: &Bindings, ) -> Result<Value>
Evaluate expression with variable bindings
This evaluates an expression to a value, substituting any bound variables.
Auto Trait Implementations§
impl Freeze for Unifier
impl RefUnwindSafe for Unifier
impl Send for Unifier
impl Sync for Unifier
impl Unpin for Unifier
impl UnwindSafe for Unifier
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more