spectacle-1.0.0: CHANGELOG.md
Version 0.1.0.0
===============
#### Extensible Records
* 'RecT' renamed to 'RecF' to avoid colliding with the naming scheme generally reserved for monad transformers. Record constructor names reflect this change.
* The "rec" suffix removed from the functions 'setRecF', 'getRecF', 'getRec', and 'setRec' renamed to prefer the less noise 'setF', getF', 'set', and 'get'.
* The selector constraint (.|) and (#) type synonym replaced with 'Has' constraint for readiblity.
```haskell
-- previously
type HasFooInt ctx = "foo" # Int .| ctx
-- ... is now
type HasFootInt ctx = Has "foo" Int ctx
```
* A new type 'Evident' and class 'HasDict' now give a uniform way for capturing typeclass evidence of extensible records.
* 'Rec' and 'RecT' instance declaration are no longer defined for the base case and inductive case. Instead, extensible record instances pass the responsibility witnessing a dictionary to a 'HasDict' superclass.
```haskell
-- old version
instance Show (Rec '[]) where
show RNil = ...
instance (Show x, Show xs) => Show (Rec (x ': xs)) where
show RNil = ...
-- new version
instance HasDict Show ctx => Show (Rec ctx) where
show Nil = ...
show Con {} = ...
```