fay-0.19: tests/recordWildCards.hs
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RecordWildCards #-}
module RecordWildCards where
import FFI
data C = C { a :: Int, b :: Int, c :: Int, d :: Int }
data X = X { foo :: Int } | Y { foo :: Int }
partialMatch :: C -> Int
partialMatch C{a=x, ..} = x + d
con :: C
con = let {a=10; b=20; c=30; d=40} in C{..}
match :: X -> Int
match X{..} = foo
partialCon :: C
partialCon = let a = 11; b = 2; c = 3; d = 4 in C { a = 1, ..}
partialMatch2 c =
let a = 100
in case c of
C{a=x,..} -> a
main = do
print con
print partialCon
print $ match X{foo=9}
print $ partialMatch C{a=1, b=2, c=3, d=4}
print $ partialMatch2 $ C 1 2 3 4
-- non exhaustive pattern match in `match`
let y = Y{foo=6}
print (match y)