module { export = [main], features = [chr] } import "StandardLibrary" ruleset IntegerSet where constraint Element Integer // Set may not contain duplicates Element ?x => print "added \(?x)" -Element ?x, Element ?x => print "removed duplicate \(?x)" addSet :: IntegerSet -> Integer -> () addSet set newElement = () where include IntegerSet set True => Element newElement printSet :: IntegerSet -> () printSet set = () where include IntegerSet set Element ?x => print "printing \(?x)" main = () where set = createIntegerSet addSet set 1 addSet set 2 addSet set 1 printSet set -- added 1 added 2 added 1 removed duplicate 1 printing 2 printing 1 ()