on master help sign in
Fix performance regression
commitea95d4d68d57b13546f9dfa036c11699297f8e2b authorCsongor Kiss <kiss.csongor.kiss@gmail.com> dateSun 3 Sep 2017, 16:54 (9 years ago) parent21bd663
3 files changed+8−10
src/Data/Generics/Internal/Lens.hs+1−3 src/Data/Generics/Product/Internal/Fields.hs+4−1 src/Data/Generics/Product/Internal/Positions.hs+3−6
src/Data/Generics/Internal/Lens.hs+1−3
@@ -18,7 +18,7 @@ module Data.Generics.Internal.Lens where
1818import Control.Applicative (Const(..))
1919import Data.Functor.Identity (Identity(..))
2020import Data.Profunctor (Choice(right'), Profunctor(dimap))
21−import GHC.Generics ((:*:)(..), (:+:)(..), Generic(..), K1(..), M1(..), Rep)
21+import GHC.Generics ((:*:)(..), (:+:)(..), Generic(..), M1(..), Rep)
2222
2323-- | Type alias for lens
2424type Lens' s a
@@ -76,8 +76,6 @@ repIso = dimap from (fmap to)
7676mIso :: Iso' (M1 i c f p) (f p)
7777mIso = dimap unM1 (fmap M1)
7878
79−kIso :: Iso' (K1 t a x) a
80−kIso = dimap unK1 (fmap K1)
8179
8280sumIso :: Iso' ((a :+: b) x) (Either (a x) (b x))
8381sumIso = dimap f (fmap t)
src/Data/Generics/Product/Internal/Fields.hs+4−1
@@ -49,8 +49,11 @@ instance (GHasField field l a, GHasField field r a)
4949
5050 gfield = combine (gfield @field @l) (gfield @field @r)
5151
52+instance GHasField field (K1 R a) a where
53+ gfield f (K1 x) = fmap K1 (f x)
54+
5255instance GHasField field (S1 ('MetaSel ('Just field) upkd str infstr) (Rec0 a)) a where
53− gfield = mIso . kIso
56+ gfield = mIso . gfield @field
5457
5558instance GHasField field f a => GHasField field (M1 D meta f) a where
5659 gfield = mIso . gfield @field
src/Data/Generics/Product/Internal/Positions.hs+3−6
@@ -42,13 +42,10 @@ import GHC.TypeLits (type (<=?), type (+), Nat)
4242class GHasPosition (offset :: Nat) (i :: Nat) (f :: Type -> Type) a | offset i f -> a where
4343 gposition :: Lens' (f x) a
4444
45−instance GHasPosition i i (S1 meta (Rec0 a)) a where
46− gposition = mIso . kIso
45+instance GHasPosition i i (K1 R a) a where
46+ gposition f (K1 x) = fmap K1 (f x)
4747
48−instance GHasPosition offset i f a => GHasPosition offset i (M1 D meta f) a where
49− gposition = mIso . gposition @offset @i
50−
51−instance GHasPosition offset i f a => GHasPosition offset i (M1 C meta f) a where
48+instance GHasPosition offset i f a => GHasPosition offset i (M1 m meta f) a where
5249 gposition = mIso . gposition @offset @i
5350
5451instance