summaryrefslogtreecommitdiff
path: root/crates/elfmind/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/elfmind/src/main.rs')
-rw-r--r--crates/elfmind/src/main.rs49
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());
}