#ifdef LANGUAGE_DataKinds
#endif
module Data.Tuple.ITuple.Lens
( module Data.Tuple.ITuple
, _1, _2, _3, _4, _5, _6, _7, _8, _9, tuple, _head, _tail
) where
import Control.Applicative
import Data.Tuple.ITuple
_1 :: ( Functor f
, ITuple s
, ListRep s ~ (a :| as)
, ITuple t
, ListRep t ~ (b :| as)
) => (a -> f b) -> s -> f t
_1 = tuple._head
_2 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| b :| as)
) => (a -> f b) -> s -> f t
_2 = tuple._tail._head
_3 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a2 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| a2 :| b :| as)
) => (a -> f b) -> s -> f t
_3 = tuple._tail._tail._head
_4 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a2 :| a3 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| a2 :| a3 :| b :| as)
) => (a -> f b) -> s -> f t
_4 = tuple._tail._tail._tail._head
_5 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a2 :| a3 :| a4 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| a2 :| a3 :| a4 :| b :| as)
) => (a -> f b) -> s -> f t
_5 = tuple._tail._tail._tail._tail._head
_6 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a2 :| a3 :| a4 :| a5 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| a2 :| a3 :| a4 :| a5 :| b :| as)
) => (a -> f b) -> s -> f t
_6 = tuple._tail._tail._tail._tail._tail._head
_7 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a2 :| a3 :| a4 :| a5 :| a6 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| a2 :| a3 :| a4 :| a5 :| a6 :| b :| as)
) => (a -> f b) -> s -> f t
_7 = tuple._tail._tail._tail._tail._tail._tail._head
_8 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a2 :| a3 :| a4 :| a5 :| a6 :| a7 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| a2 :| a3 :| a4 :| a5 :| a6 :| a7 :| b :| as)
) => (a -> f b) -> s -> f t
_8 = tuple._tail._tail._tail._tail._tail._tail._tail._head
_9 :: ( Functor f
, ITuple s
, ListRep s ~ (a1 :| a2 :| a3 :| a4 :| a5 :| a6 :| a7 :| a8 :| a :| as)
, ITuple t
, ListRep t ~ (a1 :| a2 :| a3 :| a4 :| a5 :| a6 :| a7 :| a8 :| b :| as)
) => (a -> f b) -> s -> f t
_9 = tuple._tail._tail._tail._tail._tail._tail._tail._tail._head
tuple :: ( Functor f
, ITuple s
, ITuple t
) => (Tuple (ListRep s) -> f (Tuple (ListRep t))) -> s -> f t
tuple f = fmap fromTuple . f . toTuple
_head :: Functor f => (x -> f y) -> Tuple (x :| xs) -> f (Tuple (y :| xs))
_head f (x :* xs) = (:* xs) <$> f x
_tail :: Functor f =>
(Tuple xs -> f (Tuple ys)) ->
Tuple (x :| xs) -> f (Tuple (x :| ys))
_tail f (x :* xs) = (x :*) <$> f xs