import "JavaBuiltin" as Java import "StandardLibrary" import "Unification" pair :: Default a => Default b => UTag (a, b) (Unifiable a, Unifiable b) pair = uTag 0 (\(ua, ub) -> (extract ua, extract ub)) Java.unsafeCoerce /*triple :: Default a => Default b => Default c => UTag (a, b, c) (Unifiable a, Unifiable b, Unifiable c)*/ triple = uTag 0 (\(ua, ub, uc) -> (extract ua, extract ub, extract uc)) Java.unsafeCoerce main :: (Integer,Integer,Integer) main = do um1 = createUMap um2 = createUMap v1 = uVar v2 = uVar v3 = uVar vX = uVar putUMap um1 "a" (uCons triple (v1, v2, v3)) putUMap um1 "a" (uCons triple (v2, v3, v1)) putUMap um1 "a" (uCons triple (vX, uVar, uVar)) putUMap um2 "b" vX putUMapC um2 "b" 12 getUMap um1 "a" -- (12,12,12)