]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/scl/Unification1.scl
a174362f4d768868986f64570fd35dd4fe125f6e
[simantics/platform.git] / bundles / org.simantics.scl.compiler / tests / org / simantics / scl / compiler / tests / scl / Unification1.scl
1 import "JavaBuiltin" as Java
2 import "StandardLibrary"
3 import "Unification"
4
5 pair :: Default a => Default b => UTag (a, b) (Unifiable a, Unifiable b)
6 pair = uTag 0 (\(ua, ub) -> (extract ua, extract ub)) Java.unsafeCoerce  
7
8 /*triple :: Default a => Default b => Default c =>
9     UTag (a, b, c) (Unifiable a, Unifiable b, Unifiable c)*/
10 triple = uTag 0 (\(ua, ub, uc) -> (extract ua, extract ub, extract uc)) Java.unsafeCoerce  
11
12 main :: (Integer,Integer,Integer)
13 main = do
14     um1 = createUMap
15     um2 = createUMap
16     v1 = uVar
17     v2 = uVar
18     v3 = uVar
19     vX = uVar
20     putUMap um1 "a" (uCons triple (v1, v2, v3))
21     putUMap um1 "a" (uCons triple (v2, v3, v1))
22     putUMap um1 "a" (uCons triple (vX, uVar, uVar))
23     putUMap um2 "b" vX
24     putUMapC um2 "b" 12
25
26     getUMap um1 "a"
27 --
28 (12,12,12)