packages feed

composite-lens-extra 0.0.1.0 → 0.1.0.0

raw patch · 3 files changed

+22/−67 lines, 3 filesdep ~composite-basedep ~lensdep ~vinylPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: composite-base, lens, vinyl

API changes (from Hackage documentation)

- Composite.Lens.Extra: infixr 5 :!:
- Composite.Lens.Extra: pattern (:!:) :: forall s f rs a. Contravariant f => () => f a -> Rec f rs -> Rec f ((s :-> a) : rs)
- Composite.Lens.Extra: rlens'' :: (Contravariant f, Functor g, RElem (s :-> a) rs) => proxy (s :-> a) -> (f a -> g (f a)) -> Rec f rs -> g (Rec f rs)

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for composite-lens-extra +## v0.1.0.0++* Remove `(:!:)` and `rlens'` which are now in composite-base.+ ## v0.0.1.0  * Add `(:!:)` pattern for contravariant base functors.
composite-lens-extra.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.34.7. -- -- see: https://github.com/sol/hpack  name:           composite-lens-extra-version:        0.0.1.0+version:        0.1.0.0 synopsis:       Extra lens functions for composite. description:    Extra lens functions for composite. category:       Composite, Data, Lens@@ -30,10 +30,10 @@       Paths_composite_lens_extra   hs-source-dirs:       src-  ghc-options: -Weverything -Wno-all-missed-specialisations -Wno-missing-import-lists -Wno-implicit-prelude -Wno-monomorphism-restriction -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module -Wno-safe -Wno-unsafe+  ghc-options: -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude -Wno-monomorphism-restriction -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module -Wno-safe -Wno-unsafe   build-depends:       base >=4.7 && <5-    , composite-base >=0.7.0.0 && <0.8-    , lens >=4.0 && <5.1-    , vinyl >=0.13.0 && <0.14+    , composite-base >=0.7.0.0 && <0.9+    , lens >=4.0 && <5.3+    , vinyl >=0.13.0 && <0.15   default-language: Haskell2010
src/Composite/Lens/Extra.hs view
@@ -1,74 +1,25 @@ {-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE GADTs #-}-{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE DataKinds           #-}+{-# LANGUAGE FlexibleContexts    #-}+{-# LANGUAGE GADTs               #-} {-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeApplications #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeApplications    #-}+{-# LANGUAGE TypeOperators       #-}+{-# LANGUAGE ViewPatterns        #-}  module Composite.Lens.Extra-  ( pattern (:!:),-    rlens'',+  (     rlensS,     rlensS',     rlensS'',   ) where -import Composite.Record-import qualified Control.Lens as L-import Data.Functor.Contravariant-import qualified Data.Vinyl as Vinyl-import Data.Vinyl.TypeLevel---- | Bidirectional pattern matching the first field of a record using ':->' values and any contavariant functor.------ This pattern is bidirectional meaning you can use it either as a pattern or a constructor, e.g.------ @---   let rec = Predicate even :!: Predicate (even . length) :!: RNil---       Predicate foo :!: Predicate bar :!: RNil = rec--- @------ @since 0.0.1.0-pattern (:!:) :: forall s f rs a. Contravariant f => () => f a -> Rec f rs -> Rec f (s :-> a ': rs)-pattern (:!:) fa rs <--  (contramap Val -> fa) :& rs-  where-    (:!:) fa rs = contramap getVal fa :& rs--infixr 5 :!:---- | Lens to a particular field of a record using a contravariant functor.------  For example, given:------  @---    type FFoo = "foo" :-> Int---    type FBar = "bar" :-> String---    fBar_ :: Proxy FBar---    fBar_ = Proxy------    rec :: 'Rec' 'Predicate' '[FFoo, FBar]---    rec = Predicate even :!: Predicate (even . length) :!: Nil---  @------  Then:------  @---    view (rlens'' fBar_)                           rec == Predicate even---    set  (rlens'' fBar_) Predicate (odd . length)  rec == Predicate even :!: Predicate (odd . length) :!: Nil---    over (rlens'' fBar_) (contramap show)          rec == Predicate even :!: Predicate (odd . length . show) :!: Nil---  @------ @since 0.0.1.0-rlens'' :: (Contravariant f, Functor g, RElem (s :-> a) rs) => proxy (s :-> a) -> (f a -> g (f a)) -> Rec f rs -> g (Rec f rs)-rlens'' proxy f =-  Vinyl.rlens $ \(contramap (reifyVal proxy . Val) -> fa) ->-    contramap getVal <$> f fa-{-# INLINE rlens'' #-}+import           Composite.Record           (Rec, Record, getVal, (:->) (Val))+import qualified Control.Lens               as L+import           Data.Functor.Contravariant (Contravariant (contramap))+import qualified Data.Vinyl                 as Vinyl+import           Data.Vinyl.TypeLevel       (RIndex)  -- | Type changing lens over a `Record` field. --