diff options
Diffstat (limited to 'modules/language/python/set.scm')
-rw-r--r-- | modules/language/python/set.scm | 33 |
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__ |