diff options
Diffstat (limited to 'crates/elfmind/src/main.rs')
| -rw-r--r-- | crates/elfmind/src/main.rs | 49 |
1 files changed, 20 insertions, 29 deletions
diff --git a/crates/elfmind/src/main.rs b/crates/elfmind/src/main.rs index 19b8a03..e4cd4cc 100644 --- a/crates/elfmind/src/main.rs +++ b/crates/elfmind/src/main.rs @@ -1,51 +1,42 @@ use elfmind::*; -use knowledge::*; fn main() { - let mut ctx = Context::default(); let mut db = Database::default(); 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)))) + .fact(Relation::HasItem((CharacterUnmasked::Assagioli, Item::Apple))) + .fact(Relation::FriendOf((CharacterUnmasked::Bombieri, CharacterUnmasked::Cagliostro))) .learn(); - let vt = ctx.var("time"); - let vi = ctx.var("item"); db.query().rule(Rule { - head: Relation::UsedItemAt(( - Hole::Val(character::Character::Tyumici), - Hole::Var(vi), - Hole::Var(vt), + head: RelationHole::UsedItemAt(( + Hole::Val(CharacterUnmasked::Assagioli), + Hole::Var(Var(0)), + Hole::Var(Var(1)), )), body: vec![ - Relation::TimeIs(Hole::Var(vt)), - Relation::HasItem((Hole::Val(character::Character::Tyumici), Hole::Var(vi))), + RelationHole::TimeIs(Hole::Var(Var(1))), + RelationHole::HasItem((Hole::Val(CharacterUnmasked::Assagioli), Hole::Var(Var(0)))), ], }).learn(); - let vt = ctx.var("time"); - let vc = ctx.var("char"); db.query().rule(Rule { - head: Relation::FriendOf(( - Hole::Val(character::Character::Naesten), - Hole::Var(vc), + head: RelationHole::FriendOf(( + Hole::Val(CharacterUnmasked::Cagliostro), + Hole::Var(Var(0)), )), body: vec![ - Relation::TimeIs(Hole::Var(vt)), - Relation::UsedItemAt((Hole::Var(vc), Hole::Val(item::Item::Apple), Hole::Var(vt))), + RelationHole::TimeIs(Hole::Var(Var(1))), + RelationHole::UsedItemAt((Hole::Var(Var(0)), Hole::Val(Item::Apple), Hole::Var(Var(1)))), ], }).learn(); - let vc1 = ctx.var("char"); - let vc2 = ctx.var("char"); - let vc3 = ctx.var("char"); db.query().rule(Rule { - head: Relation::FriendOf(( - Hole::Var(vc1), - Hole::Var(vc3), + head: RelationHole::FriendOf(( + Hole::Var(Var(0)), + Hole::Var(Var(2)), )), body: vec![ - Relation::FriendOf((Hole::Var(vc1), Hole::Var(vc2))), - Relation::FriendOf((Hole::Var(vc2), Hole::Var(vc3))), + RelationHole::FriendOf((Hole::Var(Var(0)), Hole::Var(Var(1)))), + RelationHole::FriendOf((Hole::Var(Var(1)), Hole::Var(Var(2)))), ], }).learn(); - println!("{:#?}", db.query().fact(Relation::TimeIs(Hole::Val(8))).ask()); - + println!("{}", db); + println!("{}", db.query().fact(Relation::TimeIs(8)).fact(Relation::TimeIs(9)).ask()); } |
