summaryrefslogtreecommitdiff
path: root/modules/language/python/set.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/set.scm')
-rw-r--r--modules/language/python/set.scm33
1 files changed, 33 insertions, 0 deletions
diff --git a/modules/language/python/set.scm b/modules/language/python/set.scm
index 2f3b7cc..23fb552 100644
--- a/modules/language/python/set.scm
+++ b/modules/language/python/set.scm
@@ -31,6 +31,39 @@
(define miss (list 'miss))
+(define-method (< (o1 <set>) ( o2 <set>))
+ (and (not (equal? o1 o2))
+ (for ((k : o1)) ()
+ (if (in k o2)
+ (values)
+ (break #f))
+ #:final #t)))
+
+(define-method (> (o1 <set>) ( o2 <set>))
+ (and (not (equal? o1 o2))
+ (for ((k : o2)) ()
+ (if (in k o1)
+ (values)
+ (break #f))
+ #:final #t)))
+
+(define-method (<= (o1 <set>) ( o2 <set>))
+ (for ((k : o1)) ()
+ (if (in k o2)
+ (values)
+ (break #f))
+ #:final #t))
+
+(define-method (>= (o1 <set>) ( o2 <set>))
+ (for ((k : o2)) ()
+ (if (in k o1)
+ (values)
+ (break #f))
+ #:final #t))
+
+(define-method (in k (o <set>))
+ (in k (slot-ref o 'dict)))
+
(define-syntax-rule (mk set make-py-hashtable)
(define-python-class set (<set>)
(define __init__