aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-03-05 23:08:07 +0000
committerJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-03-05 23:08:07 +0000
commitf087e3a7f8b2f2ca48c07db2a47724ce7b98dce7 (patch)
tree2dbe6dfb76f470aa71e61ed30fa9baede145ec49 /src
parentee8d66dfe3306c986b62aabb7aa42ae830ed806e (diff)
Fixed index issue with item removal
Diffstat (limited to 'src')
-rw-r--r--src/clojure/contrib/datalog/database.clj7
-rw-r--r--src/clojure/contrib/datalog/tests/test_database.clj6
2 files changed, 6 insertions, 7 deletions
diff --git a/src/clojure/contrib/datalog/database.clj b/src/clojure/contrib/datalog/database.clj
index a24f093c..aba41df9 100644
--- a/src/clojure/contrib/datalog/database.clj
+++ b/src/clojure/contrib/datalog/database.clj
@@ -152,8 +152,11 @@
(into {} (for [ik (keys idxs)]
(let [im (idxs ik)
iv (tuple ik)
- os (get im iv #{})]
- [ik (assoc im iv (f os tuple))]))))
+ os (get im iv #{})
+ ns (f os tuple)]
+ [ik (if (empty? ns)
+ (dissoc im iv)
+ (assoc im iv (f os tuple)))]))))
(defn- add-to-indexes
"Adds the tuple to the appropriate keys in the index map"
diff --git a/src/clojure/contrib/datalog/tests/test_database.clj b/src/clojure/contrib/datalog/tests/test_database.clj
index 445873dc..1aaea324 100644
--- a/src/clojure/contrib/datalog/tests/test_database.clj
+++ b/src/clojure/contrib/datalog/tests/test_database.clj
@@ -113,8 +113,6 @@
{:becky
{3
#{{:jen 1, :joan 0, :becky 3}}
- 4
- #{}
2
#{{:jen 1, :joan 3, :becky 2}}}
:jen
@@ -126,9 +124,7 @@
#{{:sue 2, :mary 1}
{:sue 3, :mary 2}}
{:mary
- {3
- #{}
- 2
+ {2
#{{:sue 3, :mary 2}}
1
#{{:sue 2, :mary 1}}}})})))))