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