Changelog of @hackage/overloaded-records 0.4.2.0

ChangeLog / ReleaseNotes

Version 0.4.2.0

  • Rec instances for Eq1, Ord1, Show1, Eq, Ord, and Show. Instances for Eq1, Ord1 and Show1 are available only with transformers ==0.5.* or with base >=4.9 (i.e. GHC >=8). (new)
  • Introducing WrappedLensLike data type along with a simplified type WrappedLensLike'. For each of these we have corresponding lns and lns' operation for unpacking WrappedLensLike. (new)
    • lns :: WrappedLensLike f s t a b -> (a -> f b) -> s -> f t
    • lns' :: WrappedLensLike' f s a -> (a -> f a) -> s -> f s
  • Allowing fields/accessors to occur in multiple data constructors by not creating duplicit instances, thanks to Andy Morris. See pull request #2. (change)
  • Data type Label (l :: Symbol) that can be used to pass label value around. (new)
  • Instances for fst, snd, thd and curry fields for 11-tuples, 12-tuples up to 15-tuples. (new)
  • Instances for head and tail fields for NonEmpty list. (new)
  • Instances for HasField and ModifyField Rec context r where r is monomorphic. This is just a poor man's instance, since its usability is very limited, but helpful in those special cases. Hopefully we will be able to find a way how to define overloaded records machinery for Rec context r in general. (new)

Version 0.4.1.0

Version 0.4.0.0

  • Renamed SetField type class to ModifyField, it now contains following methods (breaking change):
    • modifyField :: Proxy# l -> (a -> b) -> s -> t
    • setField :: Proxy# l -> s -> b -> t
    • fieldLens :: Functor f => Proxy# l -> (a -> f b) -> s -> f t
  • Instances for tuples (i.e. (a, b), (a, b, c), ...) and lists (i.e. [a]). (new)
  • Definitions from Data.OverloadedRecords.TH were moved to Data.OverloadedRecords.TH.Internal, so that API can be split in to stable and unstable (internal) API. (change)
  • Aliases HasField' and ModifyField' that enforce s = t and a = b. This is similar to definitions like Lens'. Simplified versions of methods and functions are included using the same naming convention. (new)
  • Setter and Setter' changed to type aliases for Modifier type. (breaking change)
  • Introducing Setting type alias for Modifier along with setting, which is an alternative to set operation. (new)
    • setting :: Setting a s t b -> Proxy a -> b -> s -> t
  • Changed order of arguments of functions set and set' (breaking change):
    • set :: Setter s t b -> b -> s -> t
    • set' :: Setter' s a -> a -> s -> s
  • Introduced type family R that can be used to define more compact type signatures when mentioning multiple record fields in it. (new)
  • Uploaded to Hackage: http://hackage.haskell.org/package/overloaded-records-0.4.0.0

Version 0.3.0.0

  • Fixed defaultMakeFieldName, which actually behaved correctly only in very few cases. (bug fix)
  • Added missing HAVE_OVERLOADED_LABELS macro, that actually allows us to use GHC's IsLabel on GHC >8. (bug fix)
  • Exposing previously hidden FromArrow and IsFieldAccessor. (change)
  • Few simple unit tests. (new)
  • Uploaded to Hackage: http://hackage.haskell.org/package/overloaded-records-0.3.0.0

Version 0.2.0.0

  • Function overloadedRecords renamed to overloadedRecord. There is also new overloadedRecords function, that behaves as overloadedRecord, but for multiple types at once. (breaking change)
  • It is now possible to customize overloadedRecord* family of functions with custom getter and setter implementation. (new)
  • Types and functions follow, hopefully, better naming conventions. (change)
  • More low-level template haskell functions for those cases when it is necessary to build your own higher-level ones, or when you need much more control over the result. (new)
  • Uploaded to Hackage: http://hackage.haskell.org/package/overloaded-records-0.2.0.0

Version 0.1.0.0