All Versions
20
Latest Version
Avg Release Cycle
57 days
Latest Release
303 days ago

Changelog History
Page 2

  • v0.4.2.1 Changes

    May 31, 2019

    ๐Ÿ›  Fixed

    • ๐Ÿ“š Documentation fix for DivisibleBy ### ๐Ÿ”„ Changed
    • Re-export DivisibleBy, Even, and Odd from module Refined.
    • Re-export all constructors from module Refined.
  • v0.4.1 Changes

    April 15, 2019

    ๐Ÿ›  Fixed

    • Serious regression where Not p ~ p. Thanks to @k0ral who reported this.
  • v0.4.1.0 Changes

    April 15, 2019

    ๐Ÿ›  Fixed

    • Serious regression where Not p ~ p. Thanks to @k0ral who reported this.
  • v0.4 Changes

    March 18, 2019

    โž• Added

    • 'NegativeFromTo', a Predicate that ensures a numeric value is within a range [a,b], where a < 0 and b >= a. Thanks to github.com/futtetennista for this change. ### ๐Ÿ”„ Changed
    • RefinedNotException now has a child (it should have had one in v2. This was an oversight.)
    • displayRefineException no longer uses tabs, instead 2 spaces.
    • ๐Ÿ‘‰ make implementation of displayRefineException more clear via formatting.
  • v0.4.0.0 Changes

    March 18, 2019

    โž• Added

    • 'NegativeFromTo', a Predicate that ensures a numeric value is within a range [a,b], where a < 0 and b >= a. Thanks to github.com/futtetennista for this change. ### ๐Ÿ”„ Changed
    • RefinedNotException now has a child (it should have had one in v2. This was an oversight.)
    • displayRefineException no longer uses tabs, instead 2 spaces.
    • ๐Ÿ‘‰ make implementation of displayRefineException more clear via formatting.
  • v0.3.0.0 Changes

    September 26, 2018

    โž• Added

    • Internal module, and Unsafe modules, making sure to take care w.r.t. the scope of coercions related to the use of the 'Refined' constructor.
    • 'IdPred' predicate, predicate that never fails.
    • Generic instances for all predicates.
    • reallyUnsafeRefine, reallyUnsafeUnderlyingRefined, reallyUnsafeAllUnderlyingRefined, functions that allow one to use 'Coercion's to manually prove things about 'Refined' values. ### ๐Ÿ”„ Changed
    • Type role of Refined from 'phantom Representational' to 'nominal nominal'. With the old type role, one can use coerce to prove Q x given any P x. The second parameter should also be nominal because of interactions with something like GreaterThan and Data.Ord.Down. Thanks to David Feuer for pointing this out.
    • ๐Ÿ”„ Change docs to point users to 'Refined.Unsafe' module instead of recommending 'Unsafe.Coerce.unsafeCoerce'.
    • 'Ascending' and 'Descending' predicates now use 'Foldable' instead of 'IsList'.
    • ๐Ÿ‘ Lowered the lower bound on 'exceptions'; it was too strict for the support window. ### โœ‚ Removed
    • ๐Ÿ“ฆ Dependency of the 'these' package. It brings in some very heavy transitive dependencies, even though the datatype in refined is used to the most minimal extent. This is a breaking change because this change is exposed to the end user via 'RefineAndException'. It is exported from a module called 'Refined.These'. Users wishing to interact with such exceptions can either just use the datatype constituting a minimal API there, or depend on the 'these' package.
  • v0.2.3.0 Changes

    June 01, 2018

    โž• Added

    • back in the 'Foldable' instance for 'Refined'. It is safe.
  • v0.2.2.0 Changes

    May 31, 2018

    โœ‚ Removed

    • Unsafe typeclass instances that could break the 'Refined' invariant. These should not have been added.
  • v0.2.1.0 Changes

    May 31, 2018

    โœ‚ Removed

    • Unsafe typeclass instances that could break the 'Refined' invariant. These should not have been added.
  • v0.2.0.0 Changes

    May 30, 2018

    ๐Ÿ”„ Changed

    • Radical rewrite of the library, centred around 'RefineException' and the 'RefineT' monad transformer. 'validate' now has the type signature validate :: (Predicate p x, Monad m) => p -> x -> RefineT m () ### โž• Added
    • More predicates