-------------------------------------------------------------------------------- -- data (this worked before) fd : Int fd = 5 where data X : Type where MkX : Int -> X gd : Int gd = 5 where data X : Type where MkX : Int -> X -------------------------------------------------------------------------------- -- record without fields or constructor fr0 : Int fr0 = 5 where record X where gr0 : Int gr0 = 5 where record X where -------------------------------------------------------------------------------- -- record without fields but with constructor fr1 : Int fr1 = 5 where record X where constructor MkX gr1 : Int gr1 = 5 where record X where constructor MkX -------------------------------------------------------------------------------- -- record with a field and constructor fr2 : Int fr2 = 5 where record X where constructor MkX field1 : Int gr2 : Int gr2 = 5 where record X where constructor MkX field1 : Int -------------------------------------------------------------------------------- -- record with two fields and constructor fr3 : Int fr3 = 5 where record X where constructor MkX field1 : Int field2 : Bool gr3 : Int gr3 = 5 where record X where constructor MkX field1 : Char field2 : String -------------------------------------------------------------------------------- -- record with parameter fr4 : Int fr4 = 5 where record X (a : Type) where constructor MkX field1 : Int field2 : a gr4 : Int gr4 = 5 where record X (a : Type) where constructor MkX field1 : a field2 : String -------------------------------------------------------------------------------- -- complex example fr5 : List Int fr5 = fun k where k : Int k = 5 record X (a : Type) where constructor MkX xfield1 : Int xfield2 : (X a -> Int) xfield3 : a rec : X Int rec = MkX (k+1) (const (k+2)) 3 fun : Int -> List Int fun n = n :: rec.xfield1 :: rec.xfield2 rec :: rec.xfield3 :: [] gr5 : List Int gr5 = fun k where k : Int k = 6 record X (a : Type) where constructor MkX xfield1 : Int xfield2 : (X a -> Int) xfield3 : a rec : X Int rec = MkX (k+3) (const (k+4)) 5 fun : Int -> List Int fun n = n :: rec.xfield1 :: rec.xfield2 rec :: rec.xfield3 :: [] -------------------------------------------------------------------------------- main : IO () main = do printLn $ fr5 printLn $ gr5 --------------------------------------------------------------------------------