]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/CHR5.scl
Merge "Resolve some dependency problems with SDK features"
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / scl / CHR5.scl
1 module { export = [main], chr }
2 import "StandardLibrary"
3
4 ruleset IntegerSet where
5     constraint Element Integer
6     // Set may not contain duplicates
7     Element ?x => print "added \(?x)"
8     -Element ?x, Element ?x => print "removed duplicate \(?x)"
9     
10 addSet :: IntegerSet -> Integer -> <Proc> ()
11 addSet set newElement = ()
12   where
13     include IntegerSet set
14     True => Element newElement
15     
16 printSet :: IntegerSet -> <Proc> ()
17 printSet set = ()
18   where
19     include IntegerSet set
20     Element ?x => print "printing \(?x)" 
21
22 main = ()
23   where
24     set = createIntegerSet
25     addSet set 1
26     addSet set 2
27     addSet set 1
28     printSet set
29 --
30 added 1
31 added 2
32 added 1
33 removed duplicate 1
34 printing 2
35 printing 1
36 ()