diff options
Diffstat (limited to 'crates/elfmind/src/main.rs')
| -rw-r--r-- | crates/elfmind/src/main.rs | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/crates/elfmind/src/main.rs b/crates/elfmind/src/main.rs index cd811f7..19b8a03 100644 --- a/crates/elfmind/src/main.rs +++ b/crates/elfmind/src/main.rs @@ -4,13 +4,13 @@ use knowledge::*; fn main() { let mut ctx = Context::default(); let mut db = Database::default(); - db.add_fact(Relation::TimeIs(Hole::Val(6))); - db.add_fact(Relation::TimeIs(Hole::Val(7))); - db.add_fact(Relation::HasItem((Hole::Val(character::Character::Tyumici), Hole::Val(item::Item::Apple)))); - db.add_fact(Relation::FriendOf((Hole::Val(character::Character::Bobo), Hole::Val(character::Character::Naesten)))); + db.query() + .fact(Relation::HasItem((Hole::Val(character::Character::Tyumici), Hole::Val(item::Item::Apple)))) + .fact(Relation::FriendOf((Hole::Val(character::Character::Bobo), Hole::Val(character::Character::Naesten)))) + .learn(); let vt = ctx.var("time"); let vi = ctx.var("item"); - db.add_rule(Rule { + db.query().rule(Rule { head: Relation::UsedItemAt(( Hole::Val(character::Character::Tyumici), Hole::Var(vi), @@ -20,10 +20,10 @@ fn main() { Relation::TimeIs(Hole::Var(vt)), Relation::HasItem((Hole::Val(character::Character::Tyumici), Hole::Var(vi))), ], - }); + }).learn(); let vt = ctx.var("time"); let vc = ctx.var("char"); - db.add_rule(Rule { + db.query().rule(Rule { head: Relation::FriendOf(( Hole::Val(character::Character::Naesten), Hole::Var(vc), @@ -32,11 +32,11 @@ fn main() { Relation::TimeIs(Hole::Var(vt)), Relation::UsedItemAt((Hole::Var(vc), Hole::Val(item::Item::Apple), Hole::Var(vt))), ], - }); + }).learn(); let vc1 = ctx.var("char"); let vc2 = ctx.var("char"); let vc3 = ctx.var("char"); - db.add_rule(Rule { + db.query().rule(Rule { head: Relation::FriendOf(( Hole::Var(vc1), Hole::Var(vc3), @@ -45,7 +45,7 @@ fn main() { Relation::FriendOf((Hole::Var(vc1), Hole::Var(vc2))), Relation::FriendOf((Hole::Var(vc2), Hole::Var(vc3))), ], - }); - db.apply_rules(); - println!("{:#?}", db); + }).learn(); + println!("{:#?}", db.query().fact(Relation::TimeIs(Hole::Val(8))).ask()); + } |
