summaryrefslogtreecommitdiffstats
path: root/hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/hash.c b/hash.c
index f4d4dff2..45e18298 100644
--- a/hash.c
+++ b/hash.c
@@ -1065,6 +1065,27 @@ val hash_isec(val hash1, val hash2, val join_func)
}
}
+val hash_subset(val hash1, val hash2)
+{
+ val hiter, entry;
+
+ for (hiter = hash_begin(hash1), entry = hash_next(hiter);
+ entry;
+ entry = hash_next(hiter))
+ {
+ if (!inhash(hash2, car(entry), colon_k))
+ return nil;
+ }
+
+ return t;
+}
+
+val hash_proper_subset(val hash1, val hash2)
+{
+ return and2(hash_subset(hash1, hash2),
+ null(numeq(hash_count(hash1), hash_count(hash2))));
+}
+
val hash_update(val hash, val fun)
{
val iter = hash_begin(hash);