import "Prelude" data XYZ = XYZ { x :: Double, y :: Double, z :: Double } deriving instance Show XYZ updateX x' XYZ {..} = XYZ {x', ..} main = print $ updateX 5 $ XYZ { x = 4, y = 3, .. } where z = 2 -- XYZ 5.0 3.0 2.0 () -- import "Prelude" main = () where constraint R { a :: Integer, b :: Integer, label :: String } -R { a = 0, .. } => print "Final: b = \(?b), label = \(?label)" -R { ?a, ?b, .. } => R { a=?a-1, b=?b+1, .. } True => R { a = 5, b = 5, label = "My label" } -- Final: b = 10, label = My label ()