All Versions
21
Latest Version
Avg Release Cycle
63 days
Latest Release
1298 days ago

Changelog History
Page 1

  • v0.4.0.0 Changes

    September 29, 2020
    • Adapt to the TyVarBndr data type gaining a new flag type parameter (in template-haskell-2.17.0.0) to represent its specificity:
      • Introduce a new Language.Haskell.TH.Datatype.TyVarBndr module that defines TyVarBndr_, a backwards-compatible type synonym for TyVarBndr, as well as backporting TyVarBndrSpec, TyVarBndrUnit, and Specificity. This module also defines other useful functions for constructing and manipulating TyVarBndrs.
      • The types in Language.Haskell.TH.Datatype now use TyVarBndr_, TyVarBndrUnit, and TyVarBndrSpec where appropriate. Technically, this is not a breaking change, since all three are simple type synonyms around TyVarBndr, but it is likely that you will need to update your th-abstraction-using code anyway if it involves a TyVarBndr-consuming function.
  • v0.3.2.0 Changes

    February 06, 2020
    • ๐Ÿ‘Œ Support substituting into and extracting free variables from ForallVisTs on template-haskell-2.16.0.0 (GHC 8.10) or later.
    • ๐Ÿ›  Fix a bug in which freeVariables could report duplicate kind variables when they occur in the kinds of the type variable binders in a ForallT.
    • ๐Ÿ›  Fix a bug in which resolveInfixT would not resolve UInfixTs occurring in the kinds of type variable binders in a ForallT.
    • ๐Ÿ›  Fix a bug in which the TypeSubstitution ConstructorInfo instance would not detect free kind variables in the constructorVars.
  • v0.3.1.0 Changes

    April 29, 2019
    • ๐Ÿ›  Fix a bug which would cause data family information to be reified incorrectly with GHC 8.8+ in some situations.
  • v0.3.0.0 Changes

    April 26, 2019
    • ๐Ÿ’ฅ Breaking change: the datatypeVars field of DatatypeInfo is now of type [TyVarBndr] instead of [Type], as it now refers to all of the bound type variables in the data type. The old datatypeVars field has been renamed to datatypeInstTypes to better reflect its purpose.

    In addition, the type of normalizeCon now has an additional [TyVarBndr] argument, since DatatypeInfo now requires it.

    • ๐Ÿ‘Œ Support template-haskell-2.15.
    • ๐Ÿ›  Fix a bug in which normalizeDec would not detect existential type variables in a GADT constructor if they were implicitly quantified.
    • ๐Ÿ›  Fix a bug in which normalizeDec would report an incorrect number of datatypeVars for GADT declarations with explicit return kinds (such as data Foo :: * -> * where).
  • v0.2.11.0 Changes

    February 26, 2019
    • ๐Ÿ›  Fix a bug in which freeVariablesWellScoped would sometimes not preserve the left-to-right ordering of Names generated with newName.
  • v0.2.10.0 Changes

    December 21, 2018
    • Optimization: quantifyType now collapses consecutive foralls. For instance, calling quantifyType on forall b. a -> b -> T a now produces forall a b. a -> b -> T a instead of forall a. forall b. a -> b -> T a.
  • v0.2.9.0 Changes

    December 20, 2018
    • ๐Ÿ›  Fix a bug in which resolveTypeSynonyms would not look into ForallTs, SigTs, InfixTs, or ParensTs.
    • ๐Ÿ›  Fix a bug in which quantifyType would not respect the dependency order of type variables (e.g., Proxy (a :: k) would have erroneously been quantified as forall a k. Proxy (a :: k)).
    • ๐Ÿ›  Fix a bug in which asEqualPred would return incorrect results with GHC 8.7.
    • โž• Add a freeVariablesWellScoped function which computes the free variables of a list of types and sorts them according to dependency order.
    • โž• Add a resolveKindSynonyms function which expands all type synonyms in a Kind. This is mostly useful for supporting old GHCs where Type and Kind were not the same.
  • v0.2.8.0 Changes

    June 29, 2018
    • GADT reification is now much more robust with respect to PolyKinds:

      • A bug in which universally quantified kind variables were mistakenly flagged as existential has been fixed.
      • A bug in which the kinds of existentially quantified type variables were not substituted properly has been fixed.
      • More kind equalities are detected than before. For example, in the following data type:
      data T (a :: k) where
        MkT :: forall (a :: Bool). T a
      

      We now catch the k ~ Bool equality.

    • ๐Ÿ‘‰ Tweak resolveTypeSynonyms so that failing to reify a type constructor name so longer results in an error. Among other benefits, this makes it possible to pass data types with GADT syntax to normalizeDec.

  • v0.2.7.0 Changes

    June 18, 2018
    • ๐Ÿ›  Fix bug in which data family instances with duplicate occurrences of type variables in the left-hand side would have redundant equality constraints in their contexts.
  • v0.2.6.0 Changes

    September 05, 2017
    • ๐Ÿ›  Fix bug in which applySubstitution and freeVariables would ignore type variables in the kinds of type variable binders.