mono-traversable 1.0.12.0 → 1.0.13.0
raw patch · 3 files changed
+33/−3 lines, 3 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.MonoTraversable: WrappedPoly :: f a -> WrappedPoly f a
+ Data.MonoTraversable: [unwrapPoly] :: WrappedPoly f a -> f a
+ Data.MonoTraversable: instance Data.Foldable.Foldable f => Data.Foldable.Foldable (Data.MonoTraversable.WrappedPoly f)
+ Data.MonoTraversable: instance Data.Foldable.Foldable f => Data.MonoTraversable.MonoFoldable (Data.MonoTraversable.WrappedPoly f a)
+ Data.MonoTraversable: instance GHC.Base.Applicative f => Data.MonoTraversable.MonoPointed (Data.MonoTraversable.WrappedPoly f a)
+ Data.MonoTraversable: instance GHC.Base.Applicative f => GHC.Base.Applicative (Data.MonoTraversable.WrappedPoly f)
+ Data.MonoTraversable: instance GHC.Base.Functor f => Data.MonoTraversable.MonoFunctor (Data.MonoTraversable.WrappedPoly f a)
+ Data.MonoTraversable: instance GHC.Base.Functor f => GHC.Base.Functor (Data.MonoTraversable.WrappedPoly f)
+ Data.MonoTraversable: instance GHC.Base.Monad f => GHC.Base.Monad (Data.MonoTraversable.WrappedPoly f)
+ Data.MonoTraversable: newtype WrappedPoly f a
Files
- ChangeLog.md +4/−0
- mono-traversable.cabal +3/−3
- src/Data/MonoTraversable.hs +26/−0
ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.0.13.0+* Added `WrappedPoly` to `Data.MonoTraversable`+ [#180](https://github.com/snoyberg/mono-traversable/pull/180)+ ## 1.0.12.0 * Added `filterSet` to `Data.Containers` * Use container specific implementations for `filterSet` and `filterMap`
mono-traversable.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: bb2c95aee7a253f7f93bf9fb96eeb108b577eb9e3bf4015d290187a0f4dafc28+-- hash: f15c018a84778989ad8a6b3271167acba04984c689d9620523b6855ce2ec78f1 name: mono-traversable-version: 1.0.12.0+version: 1.0.13.0 synopsis: Type classes for mapping, folding, and traversing monomorphic containers description: Please see the README at <https://www.stackage.org/package/mono-traversable> category: Data@@ -39,7 +39,7 @@ src ghc-options: -Wall build-depends:- base >=4.9 && <5+ base >=4.10 && <5 , bytestring >=0.9 , containers >=0.5.8 , hashable
src/Data/MonoTraversable.hs view
@@ -1,11 +1,13 @@ {-# LANGUAGE ConstrainedClassMethods #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-} -- | Type classes mirroring standard typeclasses, but working with monomorphic containers. -- -- The motivation is that some commonly used data types (i.e., 'ByteString' and@@ -1382,3 +1384,27 @@ ointercalate x = T.intercalate x . otoList #-} {-# RULES "intercalate LText" forall x. ointercalate x = TL.intercalate x . otoList #-}++-- | Provides a `MonoFoldable`, `MonoFunctor` or `MonoPointed` for an arbitrary+-- `F.Foldable`, `Functor` or `Applicative`.+--+-- Useful for, e.g., passing a `F.Foldable` type you don't own into a+-- function that expects a `MonoFoldable`.+--+-- > // package A+-- > data MyList a = MyList [a] deriving Foldable+-- >+-- > // package B+-- > process :: MonoFoldable mono => mono -> IO ()+-- >+-- > // package C+-- > process (WrappedPoly (MyList []))+--+-- @since 1.0.13.0+newtype WrappedPoly f a = WrappedPoly { unwrapPoly :: f a }+ deriving newtype (F.Foldable, Functor, Applicative, Monad)++type instance Element (WrappedPoly f a) = a+instance F.Foldable f => MonoFoldable (WrappedPoly f a)+instance Functor f => MonoFunctor (WrappedPoly f a)+instance Applicative f => MonoPointed (WrappedPoly f a)