Copyright | Travis Whitaker 2019-2024 |
---|---|
License | MIT |
Maintainer | pi.boy.travis@gmail.com |
Stability | Provisional |
Portability | Portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
See http://programmable.computer/compatible.html for a full exposition and worked examples.
Synopsis
- class Compat a where
- getCompatible :: forall a. (Compat a, CompatConstraint a a, Alternative (CompatF a), Monad (CompatF a)) => (forall c. (Compat c, CompatConstraint a c) => CompatF a c) -> CompatF a a
Documentation
A class for backwards-compatible data.
The predecessor for this type, i.e. the type for the data schema
directly preceeding a
.
type CompatConstraint a :: Type -> Constraint Source #
Any additional constraints required to yield data values. Typically this will be a class that provides a parser.
type CompatF a :: Type -> Type Source #
A type for wrapping migration results. It is most useful if this type
has Alternative
and Monad
instances, enabling the use of
getCompatible
. Maybe
is a good first choice.
getCompatible :: forall a. (Compat a, CompatConstraint a a, Alternative (CompatF a), Monad (CompatF a)) => (forall c. (Compat c, CompatConstraint a c) => CompatF a c) -> CompatF a a Source #
Recursively migrate a data value to the most recent schema, if possible.