@hackage data-diverse0.11.0.0

Extensible records and polymorphic variants.

Hackage Build Status

"Data.Diverse.Many" is an extensible record for any size encoded efficiently as (Seq Any).

"Data.Diverse.Which" polymorphic variant of possibilities encoded as (Int, Any).

Provides getters, setters, projection, injection, folds, and catamorphisms; accessed by type or index or label.

Refer to ManySpec.hs and WhichSpec.hs for example usages.

Iso, Lens and Prisms are provided in data-diverse-lens

Changelog

  • 0.1.0.0

    • Initial version represented as (Int, Data.Map Int Any)
  • 0.4.0.0

    • Removed Emit typeclass, breaking renames. Added label accessors.
  • 0.5.0.0

    • Renamed type level functions module from Type to TypeLevel
  • 0.6.0.0

    • Moved lens to data-diverse-lens
  • 0.7.0.0

    • Removed NOINLINE pragmas.
    • Changed internal representation to (Int, Data.IntMap Any) for a 2.5x append speedup.
  • 0.8.0.0

    • Changed internal representation to (Data.Seq Any) for a further 2x append speedup.
    • Added NFData instance for Many.
  • 0.8.1.0

    • Added NFData instance for Which.
    • Forgot to expose Many.sliceL and Many.sliceR.
  • 0.9.0.0

    • Breaking changes: Renamed Many.sliceL/R to Many.viewf/b
    • Renamed TypeLevel.Internal.MissingImpl to IsUniqueImpl.
    • Added postifx' with SnocUnique and append' with AppendUnique.
    • Added Semigroup & Monoid instances for Many '[] and Which '[]
    • Fixed GHC 8.2 compile error with importing GHC.Prim (Any)
  • 0.9.0.1

    • Fixed GHC 8.2.1 test failure due to changed TypeRep show instance.
  • 0.10.0.0

    • Renamed Switch to Switcher. Switch is now a type synonym for switch constraints
    • Added CasesResult type family to help infer the result of cases
    • Added Semigroup and Monoid instances for all Many xs.
    • Added Maybe versions of trial, and reinterpret
    • Renamed reinterpetN to reinterpretN'
    • Renamed impossible to zilch.
    • Allowed reintepreting and diversifying zilch to zilch
    • Removed zipped type variable from Amend constraints.
    • Removed r type variable from Reduce typeclass.
    • Rearranged type variables in fetch, replace, pick, trial, Diversify type parameters, so the type variable ordering is consistently smaller to larger, ie. 'x', 'xs', 'branch', 'tree'
    • Added diversify' for allowing rearranging the types only.
  • 0.11.0.0

    • Fixed https://github.com/louispan/data-diverse/issues/4
    • Added impossible modelled after Data.Void.absurd
    • Removed zilch so Which '[] is uninhabited like Data.Void.Void, making 'impossible' safe to use.
    • Removed Monoid and changed Show, Read and Generic instances for Which '[] to be partial just like Data.Void.Void.
    • Added instance Reduce (Which '[]) (Switcher c '[] r), which follows from 'impossible'.