Ticket #13025: Main.hs

File Main.hs, 378 bytes (added by acowley, 3 years ago)
Line 
1{-# LANGUAGE DataKinds #-}
2module Main where
3import Rec
4
5type MyRec = Rec '[ '("A",Int), '("B",Int), '("C",Int) ]
6
7getC :: MyRec -> Int
8getC = getField (Proxy::Proxy '("C",Int))
9
10doubleC :: MyRec -> MyRec
11doubleC r = setC (2 * (getC r)) r
12  where setC = set . (Field :: Int -> Field '("C",Int))
13
14main :: IO ()
15main = print (getC (Field 1 :& Field 2 :& Field 3 :& Nil :: MyRec))