lens 4.9 → 4.9.1
raw patch · 3 files changed
+32/−2 lines, 3 files
Files
- CHANGELOG.markdown +6/−0
- lens.cabal +1/−1
- src/Control/Lens/Wrapped.hs +25/−1
CHANGELOG.markdown view
@@ -1,3 +1,9 @@+4.9.1+-----+* Added `_Wrapped` support for `NonEmpty`.+* Added `_Wrapped` support for `Alt`.+* Fixed `Rewrapped` instance for `Last`.+ 4.9 ------- * `filepath` 1.4 support
lens.cabal view
@@ -1,6 +1,6 @@ name: lens category: Data, Lenses, Generics-version: 4.9+version: 4.9.1 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE
src/Control/Lens/Wrapped.hs view
@@ -13,6 +13,11 @@ {-# LANGUAGE Trustworthy #-} #endif {-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}++#ifndef MIN_VERSION_base+#define MIN_VERSION_base(x,y,z) 1+#endif+ ----------------------------------------------------------------------------- -- | -- Module : Control.Lens.Wrapped@@ -91,6 +96,7 @@ import Data.IntMap as IntMap import Data.HashSet as HashSet import Data.HashMap.Lazy as HashMap+import Data.List.NonEmpty import Data.Map as Map import Data.Monoid import qualified Data.Semigroup as S@@ -102,6 +108,10 @@ import Data.Vector.Unboxed as Unboxed import Data.Vector.Storable as Storable +#ifdef HLINT+{-# ANN module "HLint: ignore Use uncurry" #-}+#endif+ -- $setup -- >>> :set -XNoOverloadedStrings -- >>> import Control.Lens@@ -189,6 +199,12 @@ _Wrapped' = iso getZipList ZipList {-# INLINE _Wrapped' #-} +instance (t ~ NonEmpty b) => Rewrapped (NonEmpty a) t+instance Wrapped (NonEmpty a) where+ type Unwrapped (NonEmpty a) = (a, [a])+ _Wrapped' = iso (\(a :| as) -> (a, as)) (\(a,as) -> a :| as)+ {-# INLINE _Wrapped' #-}+ instance (t ~ Const a' x') => Rewrapped (Const a x) t instance Wrapped (Const a x) where type Unwrapped (Const a x) = a@@ -213,11 +229,19 @@ _Wrapped' = iso getFirst First {-# INLINE _Wrapped' #-} -instance (t ~ Last b) => Rewrapped (Last b) t+instance (t ~ Last b) => Rewrapped (Last a) t instance Wrapped (Last a) where type Unwrapped (Last a) = Maybe a _Wrapped' = iso getLast Last {-# INLINE _Wrapped' #-}++#if MIN_VERSION_base(4,8,0)+instance (t ~ Alt g b) => Rewrapped (Alt f a) t+instance Wrapped (Alt f a) where+ type Unwrapped (Alt f a) = f a+ _Wrapped' = iso getAlt Alt+ {-# INLINE _Wrapped' #-}+#endif instance (t ~ ArrowMonad m' a', ArrowApply m, ArrowApply m') => Rewrapped (ArrowMonad m a) t instance ArrowApply m => Wrapped (ArrowMonad m a) where