@@ -1,47 +1,53 @@
1−record Person : Nat -> Type where
2− MkPerson : (name : String) ->
3− (age : Nat) ->
4− Person age
5−
6−record Event : Type where
7− MkEvent : (name : String) -> (organiser : Person a) -> Event
8−
9−record Meeting : Int -> Type where
10− MkMeeting : (event : Event) ->
11− (organiser : Person a) ->
12− (year : Int) ->
13− Meeting year
1+record Person (age : Nat) where
2+ constructor MkPerson
3+ name : String
4+
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
7+
8+record Event where
9+ constructor MkEvent
10+ name : String
11+ organiser : Person a
12+
13+record Meeting (year : Int) where
14+ constructor MkMeeting
15+ event : Event
16+ organiser : Person a
1417
1518new_organiser : String -> List (Meeting x) -> List (Meeting x)
1619new_organiser n = map (record { event->organiser->name = n })
1720
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
23+
1824next_year : Meeting x -> Meeting (x+1)
19−next_year m = record { organiser->age
20− = record { organiser->age } m + 1,
21− event->organiser->age
22− = record { event->organiser->age } m + 1,
23− year = _ } m
25+next_year m = record { organiser->param_age
26+ = record { organiser->param_age } m + 1,
27+ event->organiser->param_age
28+ = record { event->organiser->param_age } m + 1,
29+ param_year = _ } m
2430
2531fred : Person 20
26−fred = MkPerson "Fred" _
32+fred = MkPerson "Fred"
2733
2834jim : Person 29
29−jim = MkPerson "Jim" 29
35+jim = MkPerson {age=29} "Jim"
3036
3137idm : Event
3238idm = MkEvent "Idris Developers Meeting" fred
3339
3440idm_gbg : Meeting 2014
35−idm_gbg = MkMeeting idm jim _
41+idm_gbg = MkMeeting idm jim
3642
3743test : Meeting 2015
3844test = next_year idm_gbg
3945
4046main : IO ()
4147main = do print (record { event->organiser->name } test)
42− print (record { event->organiser->age } test)
43− print (record { event->organiser->age } idm_gbg)
44− print (record { organiser->age } test)
45− print (record { organiser->age } idm_gbg)
46− print (record { year } idm_gbg)
48+ print (record { event->organiser->param_age } test)
49+ print (record { event->organiser->param_age } idm_gbg)
50+ print (record { organiser->param_age } test)
51+ print (record { organiser->param_age } idm_gbg)
52+ print (record { param_year } idm_gbg)
4753