@@ -1,47 +1,53 @@
1−record Person : Nat -> Type where
1+record Person (age : Nat) where
2− MkPerson : (name : String) ->
2+ constructor MkPerson
3− (age : Nat) ->
3+ name : String
5−
5+--set_param_age : (age_in : Nat) -> Person age -> Person age_in
6+--set_param_age age_in (MkPerson {age=age} name) = MkPerson {age=age_in} name
6−record Event : Type where
8+record Event where
7− MkEvent : (name : String) -> (organiser : Person a) -> Event
11+ organiser : Person a
9−record Meeting : Int -> Type where
13+record Meeting (year : Int) where
14+ constructor MkMeeting
10− MkMeeting : (event : Event) ->
15+ event : Event
11− (organiser : Person a) ->
16+ organiser : Person a
15new_organiser : String -> List (Meeting x) -> List (Meeting x)
18new_organiser : String -> List (Meeting x) -> List (Meeting x)
16new_organiser n = map (record { event->organiser->name = n })
19new_organiser n = map (record { event->organiser->name = n })
21+--set_param_year : (year_in : Int) -> Meeting year -> Meeting year_in
22+--set_param_year year_in (MkMeeting {year=year} event organiser) = MkMeeting {year=year_in} event organiser
18next_year : Meeting x -> Meeting (x+1)
24next_year : Meeting x -> Meeting (x+1)
19−next_year m = record { organiser->age
25+next_year m = record { organiser->param_age
20− = record { organiser->age } m + 1,
26+ = record { organiser->param_age } m + 1,
21− event->organiser->age
27+ event->organiser->param_age
22− = record { event->organiser->age } m + 1,
28+ = record { event->organiser->param_age } m + 1,
23− year = _ } m
29+ param_year = _ } m
25fred : Person 20
31fred : Person 20
26−fred = MkPerson "Fred" _
32+fred = MkPerson "Fred"
28jim : Person 29
34jim : Person 29
29−jim = MkPerson "Jim" 29
35+jim = MkPerson {age=29} "Jim"
31idm : Event
37idm : Event
32idm = MkEvent "Idris Developers Meeting" fred
38idm = MkEvent "Idris Developers Meeting" fred
34idm_gbg : Meeting 2014
40idm_gbg : Meeting 2014
35−idm_gbg = MkMeeting idm jim _
41+idm_gbg = MkMeeting idm jim
37test : Meeting 2015
43test : Meeting 2015
38test = next_year idm_gbg
44test = next_year idm_gbg
40main : IO ()
46main : IO ()
41main = do print (record { event->organiser->name } test)
47main = do print (record { event->organiser->name } test)
42− print (record { event->organiser->age } test)
48+ print (record { event->organiser->param_age } test)
43− print (record { event->organiser->age } idm_gbg)
49+ print (record { event->organiser->param_age } idm_gbg)
44− print (record { organiser->age } test)
50+ print (record { organiser->param_age } test)
45− print (record { organiser->age } idm_gbg)
51+ print (record { organiser->param_age } idm_gbg)
46− print (record { year } idm_gbg)
52+ print (record { param_year } idm_gbg)