| ||||||||
| ||||||||
Description | ||||||||
Framework for record merging. Idea: MergeableRecord is intended to be a super class for classes providing update operations on records. The ADT induced by such a set of operations can be considered a mergeable record, which can be merged into larger mergeable records essentially by function composition. Finalization turns a mergeable record into a record. Typical use: Given data Foo = Foo {l1 :: T1, l2 :: T2} one define a mergeable record type (MR Foo) by the following instance: instance MergeableRecord Foo where mrDefault = Foo {l1 = v1_dflt, l2 = v2_dflt} Typically, one would also provide definitions for setting the fields, possibly (but not necessarily) overloaded: instance HasL1 Foo where setL1 v = mrMake (foo -> foo {l1 = v}) Now Foo records can be created as follows: let foo1 = setL1 v1 ... let foo2 = setL2 v2 ~+~ foo1 ... let fooN> = setL1 vN ~+~ foo<N-1 let fooFinal = mrFinalize fooN | ||||||||
Documentation | ||||||||
| ||||||||
| ||||||||
| ||||||||
| ||||||||
| ||||||||
| ||||||||
| ||||||||
Produced by Haddock version 2.3.0 |