module Lens.Family.Stock (
_1, _2
, chosen
, ix
, at, intAt
, at', intAt'
, contains, intContains
, left, right
, just, nothing
, both
, bend, lend
, cod
, both'
, bend', lend'
, both_
, bend_, lend_
, left_, right_
, just_, nothing_
, ignored
, mapped
, alongside
, backwards
, beside, beside', beside_
, choosing
, from
, AlongsideLeft, AlongsideRight
, FromF, FromG
, AdapterLike, AdapterLike'
, LensLike, LensLike'
, GrateLike, GrateLike'
, Identical, Backwards
, FiniteBits
, lft, rgt
, some, none
, lft_, rgt_
, some_, none_
) where
import Control.Arrow (first, second)
import Control.Applicative.Backwards (Backwards(..))
import Control.Applicative (liftA2)
import Data.Bits (FiniteBits, (.|.), bit, finiteBitSize, testBit, zeroBits)
import qualified Data.IntMap as IntMap
import qualified Data.IntMap.Strict as IntMap'
import qualified Data.IntSet as IntSet
import qualified Data.Map as Map
import qualified Data.Map.Strict as Map'
import Data.Proxy (asProxyTypeOf)
import qualified Data.Set as Set
import Lens.Family
import Lens.Family.Phantom
import Lens.Family.Unchecked
choosing :: Functor f => LensLike f s0 t0 a b -> LensLike f s1 t1 a b -> LensLike f (Either s0 s1) (Either t0 t1) a b
choosing :: forall (f :: * -> *) s0 t0 a b s1 t1.
Functor f =>
LensLike f s0 t0 a b
-> LensLike f s1 t1 a b
-> LensLike f (Either s0 s1) (Either t0 t1) a b
choosing LensLike f s0 t0 a b
la LensLike f s1 t1 a b
_ a -> f b
f (Left s0
a) = forall a b. a -> Either a b
Left forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> LensLike f s0 t0 a b
la a -> f b
f s0
a
choosing LensLike f s0 t0 a b
_ LensLike f s1 t1 a b
lb a -> f b
f (Right s1
b) = forall a b. b -> Either a b
Right forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> LensLike f s1 t1 a b
lb a -> f b
f s1
b
_1 :: Functor f => LensLike f (a, r) (b, r) a b
_1 :: forall (f :: * -> *) a r b.
Functor f =>
LensLike f (a, r) (b, r) a b
_1 a -> f b
f (a
a, r
r) = (\b
b -> (b
b, r
r)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> f b
f a
a
_2 :: Functor f => LensLike f (r, a) (r, b) a b
_2 :: forall (f :: * -> *) r a b.
Functor f =>
LensLike f (r, a) (r, b) a b
_2 a -> f b
f (r
r, a
a) = (\b
b -> (r
r, b
b)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> f b
f a
a
chosen :: Functor f => LensLike f (Either a a) (Either b b) a b
chosen :: forall (f :: * -> *) a b.
Functor f =>
LensLike f (Either a a) (Either b b) a b
chosen = forall (f :: * -> *) s0 t0 a b s1 t1.
Functor f =>
LensLike f s0 t0 a b
-> LensLike f s1 t1 a b
-> LensLike f (Either s0 s1) (Either t0 t1) a b
choosing forall a. a -> a
id forall a. a -> a
id
ix :: (Eq k, Functor f) => k -> LensLike' f (k -> v) v
ix :: forall k (f :: * -> *) v.
(Eq k, Functor f) =>
k -> LensLike' f (k -> v) v
ix k
k v -> f v
f k -> v
g = (\v
v' k
x -> if (k
k forall a. Eq a => a -> a -> Bool
== k
x) then v
v' else k -> v
g k
x) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> v -> f v
f (k -> v
g k
k)
at :: (Ord k, Functor f) => k -> LensLike' f (Map.Map k v) (Maybe v)
at :: forall k (f :: * -> *) v.
(Ord k, Functor f) =>
k -> LensLike' f (Map k v) (Maybe v)
at = forall a b c. (a -> b -> c) -> b -> a -> c
flip forall (f :: * -> *) k a.
(Functor f, Ord k) =>
(Maybe a -> f (Maybe a)) -> k -> Map k a -> f (Map k a)
Map.alterF
intAt :: Functor f => Int -> LensLike' f (IntMap.IntMap v) (Maybe v)
intAt :: forall (f :: * -> *) v.
Functor f =>
Int -> LensLike' f (IntMap v) (Maybe v)
intAt = forall a b c. (a -> b -> c) -> b -> a -> c
flip forall (f :: * -> *) a.
Functor f =>
(Maybe a -> f (Maybe a)) -> Int -> IntMap a -> f (IntMap a)
IntMap.alterF
at' :: (Ord k, Functor f) => k -> LensLike' f (Map.Map k v) (Maybe v)
at' :: forall k (f :: * -> *) v.
(Ord k, Functor f) =>
k -> LensLike' f (Map k v) (Maybe v)
at' = forall a b c. (a -> b -> c) -> b -> a -> c
flip forall (f :: * -> *) k a.
(Functor f, Ord k) =>
(Maybe a -> f (Maybe a)) -> k -> Map k a -> f (Map k a)
Map'.alterF
intAt' :: Functor f => Int -> LensLike' f (IntMap.IntMap v) (Maybe v)
intAt' :: forall (f :: * -> *) v.
Functor f =>
Int -> LensLike' f (IntMap v) (Maybe v)
intAt' = forall a b c. (a -> b -> c) -> b -> a -> c
flip forall (f :: * -> *) a.
Functor f =>
(Maybe a -> f (Maybe a)) -> Int -> IntMap a -> f (IntMap a)
IntMap'.alterF
contains :: (Ord k, Functor f) => k -> LensLike' f (Set.Set k) Bool
contains :: forall k (f :: * -> *).
(Ord k, Functor f) =>
k -> LensLike' f (Set k) Bool
contains k
k = forall (f :: * -> *) s a b t.
Functor f =>
(s -> a) -> (s -> b -> t) -> LensLike f s t a b
lens (forall a. Ord a => a -> Set a -> Bool
Set.member k
k) (\Set k
m Bool
nv -> if Bool
nv then forall a. Ord a => a -> Set a -> Set a
Set.insert k
k Set k
m else forall a. Ord a => a -> Set a -> Set a
Set.delete k
k Set k
m)
intContains :: Functor f => Int -> LensLike' f IntSet.IntSet Bool
intContains :: forall (f :: * -> *). Functor f => Int -> LensLike' f IntSet Bool
intContains Int
k = forall (f :: * -> *) s a b t.
Functor f =>
(s -> a) -> (s -> b -> t) -> LensLike f s t a b
lens (Int -> IntSet -> Bool
IntSet.member Int
k) (\IntSet
m Bool
nv -> if Bool
nv then Int -> IntSet -> IntSet
IntSet.insert Int
k IntSet
m else Int -> IntSet -> IntSet
IntSet.delete Int
k IntSet
m)
cod :: Functor g => GrateLike g (r -> a) (r -> b) a b
cod :: forall (g :: * -> *) r a b.
Functor g =>
GrateLike g (r -> a) (r -> b) a b
cod g a -> b
f g (r -> a)
h r
r = g a -> b
f forall a b. (a -> b) -> a -> b
$ (forall a b. (a -> b) -> a -> b
$ r
r) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> g (r -> a)
h
left :: (Applicative f, Traversable g) => AdapterLike f g (Either a r) (Either b r) a b
left :: forall (f :: * -> *) (g :: * -> *) a r b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either a r) (Either b r) a b
left g a -> f b
f = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. b -> Either a b
Right) (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. a -> Either a b
Left forall b c a. (b -> c) -> (a -> b) -> a -> c
. g a -> f b
f) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse forall {a} {a}. Either a a -> Either a a
switch
where
switch :: Either a a -> Either a a
switch = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either forall a b. b -> Either a b
Right forall a b. a -> Either a b
Left
left_ :: Applicative f => LensLike f (Either a r) (Either b r) a b
left_ :: forall (f :: * -> *) a r b.
Applicative f =>
LensLike f (Either a r) (Either b r) a b
left_ = forall s t a b. AResetter s t a b -> (a -> b) -> s -> t
under forall (f :: * -> *) (g :: * -> *) a r b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either a r) (Either b r) a b
left
right :: (Applicative f, Traversable g) => AdapterLike f g (Either r a) (Either r b) a b
right :: forall (f :: * -> *) (g :: * -> *) r a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either r a) (Either r b) a b
right g a -> f b
f = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. a -> Either a b
Left) (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. b -> Either a b
Right forall b c a. (b -> c) -> (a -> b) -> a -> c
. g a -> f b
f) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) (f :: * -> *) a.
(Traversable t, Applicative f) =>
t (f a) -> f (t a)
sequenceA
right_ :: Applicative f => LensLike f (Either r a) (Either r b) a b
right_ :: forall (f :: * -> *) r a b.
Applicative f =>
LensLike f (Either r a) (Either r b) a b
right_ = forall s t a b. AResetter s t a b -> (a -> b) -> s -> t
under forall (f :: * -> *) (g :: * -> *) r a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either r a) (Either r b) a b
right
just :: (Applicative f, Traversable g) => AdapterLike f g (Maybe a) (Maybe b) a b
just :: forall (f :: * -> *) (g :: * -> *) a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Maybe a) (Maybe b) a b
just g a -> f b
f = forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Maybe a
Nothing) (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. g a -> f b
f) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) (f :: * -> *) a.
(Traversable t, Applicative f) =>
t (f a) -> f (t a)
sequenceA
just_ :: Applicative f => LensLike f (Maybe a) (Maybe b) a b
just_ :: forall (f :: * -> *) a b.
Applicative f =>
LensLike f (Maybe a) (Maybe b) a b
just_ = forall s t a b. AResetter s t a b -> (a -> b) -> s -> t
under forall (f :: * -> *) (g :: * -> *) a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Maybe a) (Maybe b) a b
just
nothing :: (Applicative f, Traversable g) => AdapterLike' f g (Maybe a) ()
nothing :: forall (f :: * -> *) (g :: * -> *) a.
(Applicative f, Traversable g) =>
AdapterLike' f g (Maybe a) ()
nothing = forall (f :: * -> *) (g :: * -> *) s t a b.
(Applicative f, Traversable g) =>
(s -> Either t a) -> (b -> t) -> AdapterLike f g s t a b
prism (forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall a b. b -> Either a b
Right ()) (forall a b. a -> Either a b
Left forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a
Just)) (forall a b. a -> b -> a
const forall a. Maybe a
Nothing)
nothing_ :: Applicative f => LensLike' f (Maybe a) ()
nothing_ :: forall (f :: * -> *) a. Applicative f => LensLike' f (Maybe a) ()
nothing_ = forall s t a b. AResetter s t a b -> (a -> b) -> s -> t
under forall (f :: * -> *) (g :: * -> *) a.
(Applicative f, Traversable g) =>
AdapterLike' f g (Maybe a) ()
nothing
both :: (Applicative f, Functor g) => AdapterLike f g (a,a) (b,b) a b
both :: forall (f :: * -> *) (g :: * -> *) a b.
(Applicative f, Functor g) =>
AdapterLike f g (a, a) (b, b) a b
both = forall (f :: * -> *) (g :: * -> *) s0 t0 a b s1 t1.
(Applicative f, Functor g) =>
AdapterLike f g s0 t0 a b
-> AdapterLike f g s1 t1 a b
-> AdapterLike f g (s0, s1) (t0, t1) a b
beside forall a. a -> a
id forall a. a -> a
id
both' :: Functor g => GrateLike g (a,a) (b,b) a b
both' :: forall (g :: * -> *) a b.
Functor g =>
GrateLike g (a, a) (b, b) a b
both' = forall (g :: * -> *) s0 t0 a b s1 t1.
Functor g =>
GrateLike g s0 t0 a b
-> GrateLike g s1 t1 a b -> GrateLike g (s0, s1) (t0, t1) a b
beside' forall a. a -> a
id forall a. a -> a
id
both_ :: Applicative f => LensLike f (a,a) (b,b) a b
both_ :: forall (f :: * -> *) a b.
Applicative f =>
LensLike f (a, a) (b, b) a b
both_ = forall (f :: * -> *) s0 t0 a b s1 t1.
Applicative f =>
LensLike f s0 t0 a b
-> LensLike f s1 t1 a b -> LensLike f (s0, s1) (t0, t1) a b
beside_ forall a. a -> a
id forall a. a -> a
id
lend :: (FiniteBits b, Applicative f, Functor g) => AdapterLike' f g b Bool
lend :: forall b (f :: * -> *) (g :: * -> *).
(FiniteBits b, Applicative f, Functor g) =>
AdapterLike' f g b Bool
lend g Bool -> f Bool
f g b
s = forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 forall a. Bits a => a -> a -> a
(.|.)) (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Bits a => a
zeroBits) [forall {a}. Bits a => Int -> Bool -> a
mask Int
i forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> g Bool -> f Bool
f (forall a b c. (a -> b -> c) -> b -> a -> c
flip forall a. Bits a => a -> Int -> Bool
testBit Int
i forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> g b
s) | Int
i <- [Int
0..forall b. FiniteBits b => b -> Int
finiteBitSize b
bforall a. Num a => a -> a -> a
-Int
1]]
where
mask :: Int -> Bool -> a
mask Int
i Bool
True = forall a. Bits a => Int -> a
bit Int
i
mask Int
_ Bool
False = forall a. Bits a => a
zeroBits
b :: b
b = b
b forall a (proxy :: * -> *). a -> proxy a -> a
`asProxyTypeOf` g b
s
lend' :: (FiniteBits b, Functor g) => GrateLike' g b Bool
lend' :: forall b (g :: * -> *).
(FiniteBits b, Functor g) =>
GrateLike' g b Bool
lend' = forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over forall b (f :: * -> *) (g :: * -> *).
(FiniteBits b, Applicative f, Functor g) =>
AdapterLike' f g b Bool
lend
lend_ :: (FiniteBits b, Applicative f) => LensLike' f b Bool
lend_ :: forall b (f :: * -> *).
(FiniteBits b, Applicative f) =>
LensLike' f b Bool
lend_ = forall s t a b. AResetter s t a b -> (a -> b) -> s -> t
under forall b (f :: * -> *) (g :: * -> *).
(FiniteBits b, Applicative f, Functor g) =>
AdapterLike' f g b Bool
lend
bend :: (FiniteBits b, Applicative f, Functor g) => AdapterLike' f g b Bool
bend :: forall b (f :: * -> *) (g :: * -> *).
(FiniteBits b, Applicative f, Functor g) =>
AdapterLike' f g b Bool
bend = forall (f :: * -> *) s t a b.
LensLike (Backwards f) s t a b -> LensLike f s t a b
backwards forall b (f :: * -> *) (g :: * -> *).
(FiniteBits b, Applicative f, Functor g) =>
AdapterLike' f g b Bool
lend
bend' :: (FiniteBits b, Functor g) => GrateLike' g b Bool
bend' :: forall b (g :: * -> *).
(FiniteBits b, Functor g) =>
GrateLike' g b Bool
bend' = forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over forall b (f :: * -> *) (g :: * -> *).
(FiniteBits b, Applicative f, Functor g) =>
AdapterLike' f g b Bool
bend
bend_ :: (FiniteBits b, Applicative f) => LensLike' f b Bool
bend_ :: forall b (f :: * -> *).
(FiniteBits b, Applicative f) =>
LensLike' f b Bool
bend_ = forall s t a b. AResetter s t a b -> (a -> b) -> s -> t
under forall b (f :: * -> *) (g :: * -> *).
(FiniteBits b, Applicative f, Functor g) =>
AdapterLike' f g b Bool
bend
beside :: (Applicative f, Functor g) => AdapterLike f g s0 t0 a b -> AdapterLike f g s1 t1 a b -> AdapterLike f g (s0, s1) (t0, t1) a b
beside :: forall (f :: * -> *) (g :: * -> *) s0 t0 a b s1 t1.
(Applicative f, Functor g) =>
AdapterLike f g s0 t0 a b
-> AdapterLike f g s1 t1 a b
-> AdapterLike f g (s0, s1) (t0, t1) a b
beside AdapterLike f g s0 t0 a b
la AdapterLike f g s1 t1 a b
lb g a -> f b
f g (s0, s1)
s = (,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AdapterLike f g s0 t0 a b
la g a -> f b
f (forall a b. (a, b) -> a
fst forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> g (s0, s1)
s) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> AdapterLike f g s1 t1 a b
lb g a -> f b
f (forall a b. (a, b) -> b
snd forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> g (s0, s1)
s)
beside' :: Functor g => GrateLike g s0 t0 a b -> GrateLike g s1 t1 a b -> GrateLike g (s0, s1) (t0, t1) a b
beside' :: forall (g :: * -> *) s0 t0 a b s1 t1.
Functor g =>
GrateLike g s0 t0 a b
-> GrateLike g s1 t1 a b -> GrateLike g (s0, s1) (t0, t1) a b
beside' GrateLike g s0 t0 a b
la GrateLike g s1 t1 a b
lb = forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) (g :: * -> *) s0 t0 a b s1 t1.
(Applicative f, Functor g) =>
AdapterLike f g s0 t0 a b
-> AdapterLike f g s1 t1 a b
-> AdapterLike f g (s0, s1) (t0, t1) a b
beside (forall (f :: * -> *) a b s t.
Identical f =>
((a -> b) -> s -> t) -> LensLike f s t a b
setting GrateLike g s0 t0 a b
la) (forall (f :: * -> *) a b s t.
Identical f =>
((a -> b) -> s -> t) -> LensLike f s t a b
setting GrateLike g s1 t1 a b
lb)
beside_ :: Applicative f => LensLike f s0 t0 a b -> LensLike f s1 t1 a b -> LensLike f (s0, s1) (t0, t1) a b
beside_ :: forall (f :: * -> *) s0 t0 a b s1 t1.
Applicative f =>
LensLike f s0 t0 a b
-> LensLike f s1 t1 a b -> LensLike f (s0, s1) (t0, t1) a b
beside_ LensLike f s0 t0 a b
la LensLike f s1 t1 a b
lb = forall s t a b. AResetter s t a b -> (a -> b) -> s -> t
under forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) (g :: * -> *) s0 t0 a b s1 t1.
(Applicative f, Functor g) =>
AdapterLike f g s0 t0 a b
-> AdapterLike f g s1 t1 a b
-> AdapterLike f g (s0, s1) (t0, t1) a b
beside (forall (g :: * -> *) a b s t.
Identical g =>
((a -> b) -> s -> t) -> GrateLike g s t a b
resetting LensLike f s0 t0 a b
la) (forall (g :: * -> *) a b s t.
Identical g =>
((a -> b) -> s -> t) -> GrateLike g s t a b
resetting LensLike f s1 t1 a b
lb)
ignored :: Applicative f => null -> s -> f s
ignored :: forall (f :: * -> *) null s. Applicative f => null -> s -> f s
ignored null
_ = forall (f :: * -> *) a. Applicative f => a -> f a
pure
mapped :: (Identical f, Functor h) => LensLike f (h a) (h b) a b
mapped :: forall (f :: * -> *) (h :: * -> *) a b.
(Identical f, Functor h) =>
LensLike f (h a) (h b) a b
mapped = forall (f :: * -> *) a b s t.
Identical f =>
((a -> b) -> s -> t) -> LensLike f s t a b
setting forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
backwards :: LensLike (Backwards f) s t a b -> LensLike f s t a b
backwards :: forall (f :: * -> *) s t a b.
LensLike (Backwards f) s t a b -> LensLike f s t a b
backwards LensLike (Backwards f) s t a b
l a -> f b
f = forall {k} (f :: k -> *) (a :: k). Backwards f a -> f a
forwards forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike (Backwards f) s t a b
l (forall {k} (f :: k -> *) (a :: k). f a -> Backwards f a
Backwards forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> f b
f)
newtype AlongsideLeft f b a = AlongsideLeft (f (a, b))
instance Functor f => Functor (AlongsideLeft f a) where
fmap :: forall a b. (a -> b) -> AlongsideLeft f a a -> AlongsideLeft f a b
fmap a -> b
f (AlongsideLeft f (a, a)
x) = forall (f :: * -> *) b a. f (a, b) -> AlongsideLeft f b a
AlongsideLeft (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first a -> b
f) f (a, a)
x)
instance Phantom f => Phantom (AlongsideLeft f a) where
coerce :: forall a b. AlongsideLeft f a a -> AlongsideLeft f a b
coerce (AlongsideLeft f (a, a)
x) = forall (f :: * -> *) b a. f (a, b) -> AlongsideLeft f b a
AlongsideLeft (forall (f :: * -> *) a b. Phantom f => f a -> f b
coerce f (a, a)
x)
newtype AlongsideRight f a b = AlongsideRight (f (a, b))
instance Functor f => Functor (AlongsideRight f a) where
fmap :: forall a b.
(a -> b) -> AlongsideRight f a a -> AlongsideRight f a b
fmap a -> b
f (AlongsideRight f (a, a)
x) = forall (f :: * -> *) a b. f (a, b) -> AlongsideRight f a b
AlongsideRight (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second a -> b
f) f (a, a)
x)
instance Phantom f => Phantom (AlongsideRight f a) where
coerce :: forall a b. AlongsideRight f a a -> AlongsideRight f a b
coerce (AlongsideRight f (a, a)
x) = forall (f :: * -> *) a b. f (a, b) -> AlongsideRight f a b
AlongsideRight (forall (f :: * -> *) a b. Phantom f => f a -> f b
coerce f (a, a)
x)
alongside :: Functor f => LensLike (AlongsideLeft f b1) s0 t0 a0 b0
-> LensLike (AlongsideRight f t0) s1 t1 a1 b1
-> LensLike f (s0, s1) (t0, t1) (a0, a1) (b0, b1)
alongside :: forall (f :: * -> *) b1 s0 t0 a0 b0 s1 t1 a1.
Functor f =>
LensLike (AlongsideLeft f b1) s0 t0 a0 b0
-> LensLike (AlongsideRight f t0) s1 t1 a1 b1
-> LensLike f (s0, s1) (t0, t1) (a0, a1) (b0, b1)
alongside LensLike (AlongsideLeft f b1) s0 t0 a0 b0
l0 LensLike (AlongsideRight f t0) s1 t1 a1 b1
l1 (a0, a1) -> f (b0, b1)
f (s0
s0, s1
s1) = f (t0, t1)
ft0t1
where
AlongsideRight f (t0, t1)
ft0t1 = LensLike (AlongsideRight f t0) s1 t1 a1 b1
l1 a1 -> AlongsideRight f t0 b1
f1 s1
s1
f1 :: a1 -> AlongsideRight f t0 b1
f1 a1
a1 = forall (f :: * -> *) a b. f (a, b) -> AlongsideRight f a b
AlongsideRight f (t0, b1)
ft0a1
where
AlongsideLeft f (t0, b1)
ft0a1 = LensLike (AlongsideLeft f b1) s0 t0 a0 b0
l0 a0 -> AlongsideLeft f b1 b0
f0 s0
s0
f0 :: a0 -> AlongsideLeft f b1 b0
f0 a0
a0 = forall (f :: * -> *) b a. f (a, b) -> AlongsideLeft f b a
AlongsideLeft ((a0, a1) -> f (b0, b1)
f (a0
a0, a1
a1))
newtype FromF i j g x = FromF ((g x -> j) -> i)
instance Functor g => Functor (FromF i j g) where
fmap :: forall a b. (a -> b) -> FromF i j g a -> FromF i j g b
fmap a -> b
f (FromF (g a -> j) -> i
h) = forall i j (g :: * -> *) x. ((g x -> j) -> i) -> FromF i j g x
FromF forall a b. (a -> b) -> a -> b
$ \g b -> j
k -> (g a -> j) -> i
h (g b -> j
k forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f)
instance Phantom g => Phantom (FromF i j g) where
coerce :: forall a b. FromF i j g a -> FromF i j g b
coerce (FromF (g a -> j) -> i
h) = forall i j (g :: * -> *) x. ((g x -> j) -> i) -> FromF i j g x
FromF forall a b. (a -> b) -> a -> b
$ \g b -> j
k -> (g a -> j) -> i
h (g b -> j
k forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Phantom f => f a -> f b
coerce)
newtype FromG e f x = FromG (e -> f x)
instance Functor f => Functor (FromG e f) where
fmap :: forall a b. (a -> b) -> FromG e f a -> FromG e f b
fmap a -> b
f (FromG e -> f a
h) = forall e (f :: * -> *) x. (e -> f x) -> FromG e f x
FromG forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. e -> f a
h
instance Phantom g => Phantom (FromG e g) where
coerce :: forall a b. FromG e g a -> FromG e g b
coerce (FromG e -> g a
h) = forall e (f :: * -> *) x. (e -> f x) -> FromG e f x
FromG forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a b. Phantom f => f a -> f b
coerce forall b c a. (b -> c) -> (a -> b) -> a -> c
. e -> g a
h
from :: (Functor f, Functor g)
=> AdapterLike (FromF (g s -> f t) (f b) g) (FromG (f b) f) b a t s
-> AdapterLike f g s t a b
from :: forall (f :: * -> *) (g :: * -> *) s t b a.
(Functor f, Functor g) =>
AdapterLike (FromF (g s -> f t) (f b) g) (FromG (f b) f) b a t s
-> AdapterLike f g s t a b
from AdapterLike (FromF (g s -> f t) (f b) g) (FromG (f b) f) b a t s
l = (g a -> f b) -> g s -> f t
l'
where
FromF (g a -> f b) -> g s -> f t
l' = AdapterLike (FromF (g s -> f t) (f b) g) (FromG (f b) f) b a t s
l (\(FromG f b -> f t
h1) -> forall i j (g :: * -> *) x. ((g x -> j) -> i) -> FromF i j g x
FromF forall a b. (a -> b) -> a -> b
$ forall b c a. (b -> c) -> (a -> b) -> a -> c
(.) f b -> f t
h1) (forall e (f :: * -> *) x. (e -> f x) -> FromG e f x
FromG forall a. a -> a
id)
{-# DEPRECATED lft "Renamed as 'left'." #-}
lft :: (Applicative f, Traversable g) => AdapterLike f g (Either a r) (Either b r) a b
lft :: forall (f :: * -> *) (g :: * -> *) a r b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either a r) (Either b r) a b
lft = forall (f :: * -> *) (g :: * -> *) a r b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either a r) (Either b r) a b
left
{-# DEPRECATED lft_ "Renamed as 'left_'." #-}
lft_ :: Applicative f => LensLike f (Either a r) (Either b r) a b
lft_ :: forall (f :: * -> *) a r b.
Applicative f =>
LensLike f (Either a r) (Either b r) a b
lft_ = forall (f :: * -> *) a r b.
Applicative f =>
LensLike f (Either a r) (Either b r) a b
left_
{-# DEPRECATED rgt "Renamed as 'right'." #-}
rgt :: (Applicative f, Traversable g) => AdapterLike f g (Either r a) (Either r b) a b
rgt :: forall (f :: * -> *) (g :: * -> *) r a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either r a) (Either r b) a b
rgt = forall (f :: * -> *) (g :: * -> *) r a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Either r a) (Either r b) a b
right
{-# DEPRECATED rgt_ "Renamed as 'right_'." #-}
rgt_ :: Applicative f => LensLike f (Either r a) (Either r b) a b
rgt_ :: forall (f :: * -> *) r a b.
Applicative f =>
LensLike f (Either r a) (Either r b) a b
rgt_ = forall (f :: * -> *) r a b.
Applicative f =>
LensLike f (Either r a) (Either r b) a b
right_
{-# DEPRECATED some "Renamed as 'just'." #-}
some :: (Applicative f, Traversable g) => AdapterLike f g (Maybe a) (Maybe b) a b
some :: forall (f :: * -> *) (g :: * -> *) a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Maybe a) (Maybe b) a b
some = forall (f :: * -> *) (g :: * -> *) a b.
(Applicative f, Traversable g) =>
AdapterLike f g (Maybe a) (Maybe b) a b
just
{-# DEPRECATED some_ "Renamed as 'just_'." #-}
some_ :: Applicative f => LensLike f (Maybe a) (Maybe b) a b
some_ :: forall (f :: * -> *) a b.
Applicative f =>
LensLike f (Maybe a) (Maybe b) a b
some_ = forall (f :: * -> *) a b.
Applicative f =>
LensLike f (Maybe a) (Maybe b) a b
just_
{-# DEPRECATED none "Renamed as 'nothing'." #-}
none :: (Applicative f, Traversable g) => AdapterLike' f g (Maybe a) ()
none :: forall (f :: * -> *) (g :: * -> *) a.
(Applicative f, Traversable g) =>
AdapterLike' f g (Maybe a) ()
none = forall (f :: * -> *) (g :: * -> *) a.
(Applicative f, Traversable g) =>
AdapterLike' f g (Maybe a) ()
nothing
{-# DEPRECATED none_ "Renamed as 'nothing_'." #-}
none_ :: Applicative f => LensLike' f (Maybe a) ()
none_ :: forall (f :: * -> *) a. Applicative f => LensLike' f (Maybe a) ()
none_ = forall (f :: * -> *) a. Applicative f => LensLike' f (Maybe a) ()
nothing_