Îõ³h$P      Safe-Inferred#-/>?ÀÁÂÉÔÖ×Ùåìûrecord-operationsThe constraint  a b determines that the fields of b are a subset of the fields of a.record-operationsthe constraint  f a b determines that a can be converted into b, using the newtype f.record-operations0The type mapping for the type of a record field.record-operations*The mapping operation on the record field.record-operationsømap a polymorphic function over a record. The function should be implemented as a newtype which is an instance of the ( class, with corresponding type family ä. Pass the newtype constructor to the mapRecord function. For example to "functorize" all fields: ¯data Foo = Foo { foo :: Int , bar :: String } deriving (Show, Generic) data FunctorFoo f = FunctorFoo { foo :: f Int , bar :: f String } deriving (Generic) newtype ToFunctor (f :: * -> *) a = ToFunctor a instance Applicative f => MapField (ToFunctor f a) where type Mapped (ToFunctor f a) = f a mapField (ToFunctor x) = pure x functorize :: Applicative f => Foo -> FunctorFoo f functorize = mapRecord ToFunctor record-operations%get subset of a record. For example: ¸data Foo = Foo { foo :: Int , bar :: String } deriving (Show, Generic) data Bar = Bar { bar :: String } deriving (Show, Generic) subFoo :: Foo -> Bar subFoo = recordSubSet       .record-operations-0.0.1-GH6dhK05h4R6VVBPtRu0ARRecordOperations RecordSubSet MapRecordMapFieldMappedmapField mapRecord recordSubSet$fGenMapRecordfaM1$fGenMapRecordfa:*:$fGenMapRecordfaM10$fGenRecordSubSetaM1$fGenRecordSubSeta:*:$fGenRecordSubSetaM10