{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE QuantifiedConstraints #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeFamilies #-} module Data.Tuple.Optic ( curried , swapped , associated , t21 , t22 , t31 , t32 , t33 , t41 , t42 , t43 , t44 , t51 , t52 , t53 , t54 , t55 ) where import Data.Profunctor.Optic.Import import Data.Profunctor.Optic.Iso import Data.Profunctor.Optic.Lens --------------------------------------------------------------------- -- Optics --------------------------------------------------------------------- t21 :: Lens (a,b) (a',b) a a' t21 = lensVl $ \f ~(a,b) -> (\a' -> (a',b)) <$> f a {-# INLINE t21 #-} t22 :: Lens (a,b) (a,b') b b' t22 = lensVl $ \f ~(a,b) -> (\b' -> (a,b')) <$> f b {-# INLINE t22 #-} t31 :: Lens (a,b,c) (a',b,c) a a' t31 = lensVl $ \f ~(a,b,c) -> (\a' -> (a',b,c)) <$> f a {-# INLINE t31 #-} t32 :: Lens (a,b,c) (a,b',c) b b' t32 = lensVl $ \f ~(a,b,c) -> (\b' -> (a,b',c)) <$> f b {-# INLINE t32 #-} t33 :: Lens (a,b,c) (a,b,c') c c' t33 = lensVl $ \f ~(a,b,c) -> (\c' -> (a,b,c')) <$> f c {-# INLINE t33 #-} t41 :: Lens (a,b,c,d) (a',b,c,d) a a' t41 = lensVl $ \f ~(a,b,c,d) -> (\a' -> (a',b,c,d)) <$> f a {-# INLINE t41 #-} t42 :: Lens (a,b,c,d) (a,b',c,d) b b' t42 = lensVl $ \f ~(a,b,c,d) -> (\b' -> (a,b',c,d)) <$> f b {-# INLINE t42 #-} t43 :: Lens (a,b,c,d) (a,b,c',d) c c' t43 = lensVl $ \f ~(a,b,c,d) -> (\c' -> (a,b,c',d)) <$> f c {-# INLINE t43 #-} t44 :: Lens (a,b,c,d) (a,b,c,d') d d' t44 = lensVl $ \f ~(a,b,c,d) -> (\d' -> (a,b,c,d')) <$> f d {-# INLINE t44 #-} t51 :: Lens (a,b,c,d,e) (a',b,c,d,e) a a' t51 = lensVl $ \f ~(a,b,c,d,e) -> (\a' -> (a',b,c,d,e)) <$> f a {-# INLINE t51 #-} t52 :: Lens (a,b,c,d,e) (a,b',c,d,e) b b' t52 = lensVl $ \f ~(a,b,c,d,e) -> (\b' -> (a,b',c,d,e)) <$> f b {-# INLINE t52 #-} t53 :: Lens (a,b,c,d,e) (a,b,c',d,e) c c' t53 = lensVl $ \f ~(a,b,c,d,e) -> (\c' -> (a,b,c',d,e)) <$> f c {-# INLINE t53 #-} t54 :: Lens (a,b,c,d,e) (a,b,c,d',e) d d' t54 = lensVl $ \f ~(a,b,c,d,e) -> (\d' -> (a,b,c,d',e)) <$> f d {-# INLINE t54 #-} t55 :: Lens (a,b,c,d,e) (a,b,c,d,e') e e' t55 = lensVl $ \f ~(a,b,c,d,e) -> (\e' -> (a,b,c,d,e')) <$> f e {-# INLINE t55 #-}