-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Recursive tuple data structure. It is very usefull when implementing some lo-level operations, allowing to traverse different elements using Haskell's type classes. -- -- Recursive tuple data structure. It is very usefull when implementing -- some lo-level operations, allowing to traverse different elements -- using Haskell's type classes. @package data-rtuple @version 1.0 module Data.RTuple data RTuple a RTuple :: a -> RTuple a [fromRTuple] :: RTuple a -> a data TList (t :: *) a TList :: a -> TList a [fromTList] :: TList a -> a class ShowRtup r showRtup :: ShowRtup r => String -> r -> String class Head a head :: Head a => Lens' a (HeadOf a) class Tail a tail :: Tail a => Lens' a (TailOf a) -- | converts function taking a tuple list as argument into standard -- haskell one eg. `(a,(b,(c,()))) -> out` into `a -> b -> c -- -> out` class UncurryTuple f out | f -> out uncurryTuple :: UncurryTuple f out => f -> out type AsTList t lst = TList t (AsTListData t lst) class ToTuple a lst | a -> lst toTuple :: ToTuple a lst => a -> lst class ElAt idx a elAt :: ElAt idx a => Proxy idx -> Lens' a (ElTypeAt idx a) class ElAt' idx t elAt' :: ElAt' idx t => Proxy idx -> Lens' (TList t lst) t instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.RTuple.TList t a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.RTuple.TList t a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.RTuple.RTuple a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.RTuple.RTuple a) instance Control.Lens.Wrapped.Wrapped (Data.RTuple.RTuple a) instance Control.Lens.Wrapped.Wrapped (Data.RTuple.TList t a) instance Data.RTuple.ShowRtup () instance GHC.Show.Show a => Data.RTuple.ShowRtup (a, ()) instance (GHC.Show.Show a, Data.RTuple.ShowRtup as) => Data.RTuple.ShowRtup (a, as) instance Data.RTuple.ShowRtup a => GHC.Show.Show (Data.RTuple.RTuple a) instance Data.RTuple.Head (Data.RTuple.RTuple (r, rs)) instance (a ~ r) => Data.RTuple.Head (Data.RTuple.TList a (r, rs)) instance Data.RTuple.Tail (Data.RTuple.RTuple (r, rs)) instance Data.RTuple.Tail (Data.RTuple.TList a (r, rs)) instance Data.RTuple.UncurryTuple (Data.RTuple.RTuple () -> a) a instance Data.RTuple.UncurryTuple (Data.RTuple.RTuple xs -> f) fout => Data.RTuple.UncurryTuple (Data.RTuple.RTuple (x, xs) -> f) (x -> fout) instance Data.RTuple.ToTuple (Data.RTuple.RTuple ()) () instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, ())) t1 instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, ()))) (t1, t2) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, ())))) (t1, t2, t3) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, ()))))) (t1, t2, t3, t4) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, ())))))) (t1, t2, t3, t4, t5) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, (t6, ()))))))) (t1, t2, t3, t4, t5, t6) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, (t6, (t7, ())))))))) (t1, t2, t3, t4, t5, t6, t7) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, (t6, (t7, (t8, ()))))))))) (t1, t2, t3, t4, t5, t6, t7, t8) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, (t6, (t7, (t8, (t9, ())))))))))) (t1, t2, t3, t4, t5, t6, t7, t8, t9) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, (t6, (t7, (t8, (t9, (t10, ()))))))))))) (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, (t6, (t7, (t8, (t9, (t10, (t11, ())))))))))))) (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) instance Data.RTuple.ToTuple (Data.RTuple.RTuple (t1, (t2, (t3, (t4, (t5, (t6, (t7, (t8, (t9, (t10, (t11, (t12, ()))))))))))))) (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) instance (Data.RTuple.ElAt (n GHC.TypeLits.- 1) (Data.RTuple.RTuple rs), Data.RTuple.ElTypeAt n (Data.RTuple.RTuple (r, rs)) ~ Data.RTuple.ElTypeAt (n GHC.TypeLits.- 1) (Data.RTuple.RTuple rs)) => Data.RTuple.ElAt n (Data.RTuple.RTuple (r, rs)) instance Data.RTuple.ElAt 0 (Data.RTuple.RTuple (r, rs)) instance (Data.RTuple.ElAt (n GHC.TypeLits.- 1) (Data.RTuple.TList t rs), Data.RTuple.ElTypeAt n (Data.RTuple.TList t (r, rs)) ~ Data.RTuple.ElTypeAt (n GHC.TypeLits.- 1) (Data.RTuple.TList t rs)) => Data.RTuple.ElAt n (Data.RTuple.TList t (r, rs)) instance (t ~ r) => Data.RTuple.ElAt 0 (Data.RTuple.TList t (r, rs))