{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
module Network.OAuth.MuLens (
view, set,
over, foldMapOf,
(<&>), (&), (^.), (.~), (%~),
) where
import Data.Functor.Identity
import Data.Functor.Constant
view :: ((a -> Constant a a) -> s -> Constant a s) -> s -> a
view :: ((a -> Constant a a) -> s -> Constant a s) -> s -> a
view (a -> Constant a a) -> s -> Constant a s
inj = ((a -> Constant a a) -> s -> Constant a s) -> (a -> a) -> s -> a
forall a r b s t.
((a -> Constant r b) -> s -> Constant r t) -> (a -> r) -> s -> r
foldMapOf (a -> Constant a a) -> s -> Constant a s
inj a -> a
forall a. a -> a
id
{-# INLINE view #-}
over :: ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
over :: ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
over (a -> Identity b) -> s -> Identity t
inj a -> b
f = Identity t -> t
forall a. Identity a -> a
runIdentity (Identity t -> t) -> (s -> Identity t) -> s -> t
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Identity b) -> s -> Identity t
inj (b -> Identity b
forall a. a -> Identity a
Identity (b -> Identity b) -> (a -> b) -> a -> Identity b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> b
f)
{-# INLINE over #-}
set :: ((a -> Identity b) -> s -> Identity t) -> b -> s -> t
set :: ((a -> Identity b) -> s -> Identity t) -> b -> s -> t
set (a -> Identity b) -> s -> Identity t
l = ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
forall a b s t.
((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
over (a -> Identity b) -> s -> Identity t
l ((a -> b) -> s -> t) -> (b -> a -> b) -> b -> s -> t
forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> a -> b
forall a b. a -> b -> a
const
{-# INLINE set #-}
foldMapOf :: ((a -> Constant r b) -> s -> Constant r t) -> (a -> r) -> s -> r
foldMapOf :: ((a -> Constant r b) -> s -> Constant r t) -> (a -> r) -> s -> r
foldMapOf (a -> Constant r b) -> s -> Constant r t
inj a -> r
f = Constant r t -> r
forall a k (b :: k). Constant a b -> a
getConstant (Constant r t -> r) -> (s -> Constant r t) -> s -> r
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Constant r b) -> s -> Constant r t
inj (r -> Constant r b
forall k a (b :: k). a -> Constant a b
Constant (r -> Constant r b) -> (a -> r) -> a -> Constant r b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> r
f)
{-# INLINE foldMapOf #-}
infixl 5 <&>
(<&>) :: Functor f => f a -> (a -> b) -> f b
<&> :: f a -> (a -> b) -> f b
(<&>) = ((a -> b) -> f a -> f b) -> f a -> (a -> b) -> f b
forall a b c. (a -> b -> c) -> b -> a -> c
flip (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
(<$>)
{-# INLINE (<&>) #-}
infixl 1 &
(&) :: b -> (b -> c) -> c
& :: b -> (b -> c) -> c
(&) = ((b -> c) -> b -> c) -> b -> (b -> c) -> c
forall a b c. (a -> b -> c) -> b -> a -> c
flip (b -> c) -> b -> c
forall a b. (a -> b) -> a -> b
($)
{-# INLINE (&) #-}
infixl 8 ^.
(^.) :: s -> ((a -> Constant a a) -> s -> Constant a s) -> a
^. :: s -> ((a -> Constant a a) -> s -> Constant a s) -> a
(^.) = (((a -> Constant a a) -> s -> Constant a s) -> s -> a)
-> s -> ((a -> Constant a a) -> s -> Constant a s) -> a
forall a b c. (a -> b -> c) -> b -> a -> c
flip ((a -> Constant a a) -> s -> Constant a s) -> s -> a
forall a s. ((a -> Constant a a) -> s -> Constant a s) -> s -> a
view
{-# INLINE (^.) #-}
infixr 4 .~
(.~) :: ((a -> Identity b) -> s -> Identity t) -> b -> s -> t
.~ :: ((a -> Identity b) -> s -> Identity t) -> b -> s -> t
(.~) = ((a -> Identity b) -> s -> Identity t) -> b -> s -> t
forall a b s t.
((a -> Identity b) -> s -> Identity t) -> b -> s -> t
set
{-# INLINE (.~) #-}
infixr 4 %~
(%~) :: ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
%~ :: ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
(%~) = ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
forall a b s t.
((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
over
{-# INLINE (%~) #-}