packages feed

HList 0.4.2.0 → 0.5.0.0

raw patch · 66 files changed

+2224/−2104 lines, 66 filesdep +hspec-expectationsdep +semigroupsdep ~basePVP ok

version bump matches the API change (PVP)

Dependencies added: hspec-expectations, semigroups

Dependency ranges changed: base

API changes (from Hackage documentation)

- Data.HList.Data: GfoldlK :: (forall d b. Data d => c (d -> b) -> d -> c b) -> GfoldlK c
- Data.HList.Data: GunfoldK :: (forall b r. Data b => c (b -> r) -> c r) -> GunfoldK c
- Data.HList.Data: instance forall (k :: BOX) (x :: k) (xs :: [k]). (Data.HList.Data.RecordLabelsStr2 xs, Data.HList.FakePrelude.ShowLabel x) => Data.HList.Data.RecordLabelsStr2 (x : xs)
- Data.HList.Data: instance forall (k :: BOX) (x :: k) t (xs :: [*]). (Data.HList.Data.RecordLabelsStr xs, Data.HList.FakePrelude.ShowLabel x) => Data.HList.Data.RecordLabelsStr (Data.Tagged.Tagged x t : xs)
- Data.HList.FakePrelude: data ExtraField l
- Data.HList.FakePrelude: data FieldNotFound l
- Data.HList.FakePrelude: instance (hJustA ~ Data.HList.FakePrelude.HJust a) => Data.HList.FakePrelude.ApplyAB (Data.HList.FakePrelude.HJust t) a hJustA
- Data.HList.FakePrelude: instance (x ~ y) => Data.HList.FakePrelude.HCast1 'GHC.Types.True x y
- Data.HList.FakePrelude: instance GHC.TypeLits.KnownNat (Data.HList.FakePrelude.HNat2Nat n) => Data.HList.FakePrelude.HNat2Integral n
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (cxt :: k) (geta :: k1) a b. (Data.HList.FakePrelude.FunCxt cxt b, Data.HList.FakePrelude.FunApp geta b ~ a) => Data.HList.FakePrelude.ApplyAB (Data.HList.FakePrelude.Fun' cxt geta) a b
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (cxt :: k) (getb :: k1) a b. (Data.HList.FakePrelude.FunCxt cxt a, Data.HList.FakePrelude.FunApp getb a ~ b) => Data.HList.FakePrelude.ApplyAB (Data.HList.FakePrelude.Fun cxt getb) a b
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (es2 :: [k1]). (es2 ~ '[]) => Data.HList.FakePrelude.SameLength' '[] es2
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (t :: k) (t' :: k1) a. (Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label t') => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) (Data.Tagged.Tagged t' a)
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (t :: k) (t' :: k1). (Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label t') => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) (Data.HList.FakePrelude.Label t')
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (t :: k1) a (s :: k). Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) s => Data.HList.FakePrelude.SameLabels (Data.Tagged.Tagged t a) s
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (x :: [k]) (y :: [k1]). (Data.HList.FakePrelude.SameLength' x y, Data.HList.FakePrelude.SameLength' y x) => Data.HList.FakePrelude.SameLength x y
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (x :: k) (xs :: [k]) (es2 :: [k1]) (ys :: [k1]) (y :: k1). (Data.HList.FakePrelude.SameLength' xs ys, es2 ~ (y : ys)) => Data.HList.FakePrelude.SameLength' (x : xs) es2
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (x :: k) (xs :: [k]) (y :: k1) (ys :: [k1]). (Data.HList.FakePrelude.SameLabels x y, Data.HList.FakePrelude.SameLabels xs ys) => Data.HList.FakePrelude.SameLabels (x : xs) (y : ys)
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (x :: k) (xs :: [k]). Data.HList.FakePrelude.SameLabels (x : xs) '[]
- Data.HList.FakePrelude: instance forall (k :: BOX) (k1 :: BOX) (x :: k1) (xs :: [k1]). Data.HList.FakePrelude.SameLabels '[] (x : xs)
- Data.HList.FakePrelude: instance forall (k :: BOX) (t :: GHC.TypeLits.Symbol) (s :: k). Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) s => Data.HList.FakePrelude.SameLabels t s
- Data.HList.FakePrelude: instance forall (k :: BOX) (t :: k) (t' :: GHC.TypeLits.Symbol). (Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label t') => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) t'
- Data.HList.FakePrelude: instance forall (k :: BOX) tx x (t :: k). (Data.Tagged.Tagged t x ~ tx) => Data.HList.FakePrelude.ApplyAB Data.HList.FakePrelude.HUntag tx x
- Data.HList.FakePrelude: instance forall (k :: BOX) x (xs :: [*]) (t :: k) v. (Data.HList.FakePrelude.HAllTaggedLV xs, x ~ Data.Tagged.Tagged t v) => Data.HList.FakePrelude.HAllTaggedLV (x : xs)
- Data.HList.HArray: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound (Data.Proxy.Proxy n, e1)) => Data.HList.HArray.HUpdateAtHNat n e1 '[]
- Data.HList.HArray: instance Data.HList.HArray.HUpdateAtHNat 'Data.HList.FakePrelude.HZero e1 (e : l)
- Data.HList.HArray: instance Data.HList.HArray.HUpdateAtHNat n e1 l => Data.HList.HArray.HUpdateAtHNat ('Data.HList.FakePrelude.HSucc n) e1 (e : l)
- Data.HList.HList: instance (e' ~ e) => Data.HList.FakePrelude.ApplyAB Data.HList.HList.HRmTag (e, t) e'
- Data.HList.HList: instance (et ~ (e, t)) => Data.HList.FakePrelude.ApplyAB (Data.HList.HList.HAddTag t) e et
- Data.HList.HList: instance (hJustA ~ Data.HList.FakePrelude.HJust a) => Data.HList.FakePrelude.ApplyAB Data.HList.HList.HFromJust hJustA a
- Data.HList.HList: instance (lz ~ '[z]) => Data.HList.HList.HScanr f z '[] lz
- Data.HList.HList: instance (v ~ v') => Data.HList.HList.HFoldr f v '[] v'
- Data.HList.HList: instance (v ~ v') => Data.HList.HList.HFoldr1 f '[v] v'
- Data.HList.HList: instance (xxs ~ '[]) => Data.HList.HList.HLengthEq1 xxs 'Data.HList.FakePrelude.HZero
- Data.HList.HList: instance (z ~ z') => Data.HList.HList.HFoldl f z '[] z'
- Data.HList.HList: instance (zero ~ 'Data.HList.FakePrelude.HZero) => Data.HList.HList.HLengthEq2 '[] zero
- Data.HList.HList: instance forall (k :: BOX) (e :: k) (l :: [k]) (n :: Data.HList.FakePrelude.HNat). Data.HList.HList.HFind1 e l n => Data.HList.HList.HFind e l n
- Data.HList.HList: instance forall (k :: BOX) (e :: k) (l :: [k]) (n :: Data.HList.FakePrelude.HNat). Data.HList.HList.HFind1 e l n => Data.HList.HList.HFind2 'GHC.Types.False e l ('Data.HList.FakePrelude.HSucc n)
- Data.HList.HList: instance forall (k :: BOX) (e :: k) (l :: [k]). Data.HList.HList.HFind2 'GHC.Types.True e l 'Data.HList.FakePrelude.HZero
- Data.HList.HList: instance forall (k :: BOX) (e :: k). Data.HList.HList.HTMember e '[] 'GHC.Types.False
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (e :: k) (l :: [k]) (br :: GHC.Types.Bool) (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEq e1 e b, Data.HList.HList.HMember' b e1 l br) => Data.HList.HList.HMember e1 (e : l) br
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (e :: k) (l :: [k]) (res :: GHC.Base.Maybe [k]) (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEq e1 e b, Data.HList.HList.HMemberM1 b e1 (e : l) res) => Data.HList.HList.HMemberM e1 (e : l) res
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (e :: k) (l :: [k]) (res :: GHC.Base.Maybe [k]) (r :: GHC.Base.Maybe [k]). (Data.HList.HList.HMemberM e1 l r, Data.HList.HList.HMemberM2 r e1 (e : l) res) => Data.HList.HList.HMemberM1 'GHC.Types.False e1 (e : l) res
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (e :: k) (l :: [k]). Data.HList.HList.HMemberM1 'GHC.Types.True e1 (e : l) ('GHC.Base.Just l)
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (e2 :: k) (l :: [k]) (n :: Data.HList.FakePrelude.HNat) (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEq e1 e2 b, Data.HList.HList.HFind2 b e1 l n) => Data.HList.HList.HFind1 e1 (e2 : l) n
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (l :: [k]) (br :: GHC.Types.Bool). Data.HList.HList.HMember e1 l br => Data.HList.HList.HMember' 'GHC.Types.False e1 l br
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (l :: [k]). Data.HList.HList.HMember' 'GHC.Types.True e1 l 'GHC.Types.True
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k) (l :: [k]). Data.HList.HList.HMemberM2 'GHC.Base.Nothing e1 l 'GHC.Base.Nothing
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k). Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound e1) => Data.HList.HList.HFind1 e1 '[] 'Data.HList.FakePrelude.HZero
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k). Data.HList.HList.HMember e1 '[] 'GHC.Types.False
- Data.HList.HList: instance forall (k :: BOX) (e1 :: k). Data.HList.HList.HMemberM e1 '[] 'GHC.Base.Nothing
- Data.HList.HList: instance forall (k :: BOX) (f :: k) a (as :: [*]) (fst :: [*]) (gs :: [*]) (snd :: [*]). (Data.HList.HList.HSpanEqBy f a as fst snd, Data.HList.HList.HGroupBy f snd gs) => Data.HList.HList.HGroupBy f (a : as) (Data.HList.HList.HList (a : fst) : gs)
- Data.HList.HList: instance forall (k :: BOX) (f :: k) x (y :: [*]) (fst :: [*]) (snd :: [*]). (Data.HList.HList.HSpanEqBy1 f x y fst snd, Data.HList.HList.HAppendListR fst snd ~ y) => Data.HList.HList.HSpanEqBy f x y fst snd
- Data.HList.HList: instance forall (k :: BOX) (f :: k) x y (ys :: [*]) (i :: [*]) (o :: [*]) (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqBy f x y b, Data.HList.HList.HSpanEqBy2 b f x y ys i o) => Data.HList.HList.HSpanEqBy1 f x (y : ys) i o
- Data.HList.HList: instance forall (k :: BOX) (f :: k) x y (ys :: [*]). Data.HList.HList.HSpanEqBy2 'GHC.Types.False f x y ys '[] (y : ys)
- Data.HList.HList: instance forall (k :: BOX) (f :: k) x y (zs :: [*]) (i :: [*]) (o :: [*]). Data.HList.HList.HSpanEqBy1 f x zs i o => Data.HList.HList.HSpanEqBy2 'GHC.Types.True f x y zs (y : i) o
- Data.HList.HList: instance forall (k :: BOX) (f :: k) x. Data.HList.HList.HSpanEqBy1 f x '[] '[] '[]
- Data.HList.HList: instance forall (k :: BOX) (f :: k) x1 x (xs :: [*]) (xi :: [*]) (xo :: [*]) (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqBy f x1 x b, Data.HList.HList.HPartitionEq1 b f x1 x xs xi xo) => Data.HList.HList.HPartitionEq f x1 (x : xs) xi xo
- Data.HList.HList: instance forall (k :: BOX) (f :: k). Data.HList.HList.HGroupBy f '[] '[]
- Data.HList.HList: instance forall (k :: BOX) (k1 :: BOX) (f :: k) (x1 :: k1) x (xs :: [*]) (xi :: [*]) (xo :: [*]). Data.HList.HList.HPartitionEq f x1 xs xi xo => Data.HList.HList.HPartitionEq1 'GHC.Types.False f x1 x xs xi (x : xo)
- Data.HList.HList: instance forall (k :: BOX) (k1 :: BOX) (f :: k) (x1 :: k1) x (xs :: [*]) (xi :: [*]) (xo :: [*]). Data.HList.HList.HPartitionEq f x1 xs xi xo => Data.HList.HList.HPartitionEq1 'GHC.Types.True f x1 x xs (x : xi) xo
- Data.HList.HList: instance forall (k :: BOX) (k1 :: BOX) (f :: k) (x1 :: k1). Data.HList.HList.HPartitionEq f x1 '[] '[] '[]
- Data.HList.HList: instance forall (k :: BOX) (k1 :: BOX) (x' :: k1) (xs :: [k1]) (x :: k1) (xsys :: [k1]) (ys :: k). (x' ~ x, Data.HList.HList.HStripPrefix xs xsys ys) => Data.HList.HList.HStripPrefix (x' : xs) (x : xsys) ys
- Data.HList.HList: instance forall (k :: BOX) (k1 :: BOX) (ys :: k). Data.HList.HList.HStripPrefix '[] ys ys
- Data.HList.HList: instance forall (k :: BOX) (l1 :: [k]) (e1 :: k) (e :: k) (l :: [k]). Data.HList.HList.HMemberM2 ('GHC.Base.Just l1) e1 (e : l) ('GHC.Base.Just (e : l1))
- Data.HList.HList: instance forall (k :: BOX) (x :: k) (xs :: [k]) (ys :: [k]) (zs :: [k]). Data.HList.HList.HAppendList1 xs ys zs => Data.HList.HList.HAppendList1 (x : xs) ys (x : zs)
- Data.HList.HList: instance forall (k :: BOX) (ys :: [k]). Data.HList.HList.HAppendList1 '[] ys ys
- Data.HList.HListPrelude: instance forall (k :: BOX) (x :: k). Data.HList.HListPrelude.HExtend (Data.HList.FakePrelude.Label x) (Data.Proxy.Proxy '[])
- Data.HList.HOccurs: class HOccursNot' (b :: Bool) e (l :: [*])
- Data.HList.HOccurs: data TypeFound e
- Data.HList.HOccurs: instance (Data.HList.FakePrelude.HEq e e1 b, Data.HList.HOccurs.HOccursNot' b e l) => Data.HList.HListPrelude.HOccursNot e (e1 : l)
- Data.HList.HOccurs: instance (Data.HList.HOccurs.HOccurrence e (x : y) l', Data.HList.HOccurs.HOccurs' e l') => Data.HList.HListPrelude.HOccurs e (Data.HList.HList.HList (x : y))
- Data.HList.HOccurs: instance (e ~ e1) => Data.HList.HOccurs.HOccursOpt' e (e1 : l)
- Data.HList.HOccurs: instance (e ~ e1, Data.HList.HListPrelude.HOccursNot e l) => Data.HList.HOccurs.HOccurs' e (e : l)
- Data.HList.HOccurs: instance Data.HList.FakePrelude.Fail (Data.HList.HOccurs.TypeNotFound e) => Data.HList.HOccurs.HOccurs' e '[]
- Data.HList.HOccurs: instance Data.HList.HListPrelude.HOccursNot e '[]
- Data.HList.HOccurs: instance Data.HList.HListPrelude.HOccursNot e l => Data.HList.HOccurs.HOccursNot' 'GHC.Types.False e l
- Data.HList.HOccurs: instance forall (k :: BOX) (e :: k) (l :: [*]). Data.HList.FakePrelude.Fail (Data.HList.HOccurs.TypeFound e) => Data.HList.HOccurs.HOccursNot' 'GHC.Types.True e l
- Data.HList.HSort: instance ((x GHC.TypeLits.<=? y) ~ b) => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b
- Data.HList.HSort: instance (Data.HList.FakePrelude.HLe x y ~ b) => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b
- Data.HList.HSort: instance forall (k :: BOX) (a :: k). Data.HList.FakePrelude.HEqByFn a => Data.HList.FakePrelude.HEqByFn (Data.HList.HSort.HDown a)
- Data.HList.HSort: instance forall (k :: BOX) (a :: k). Data.HList.FakePrelude.HEqByFn a => Data.HList.FakePrelude.HEqByFn (Data.HList.HSort.HNeq a)
- Data.HList.HSort: instance forall (k :: BOX) (k1 :: BOX) (f :: k1) (x :: k) (y :: k) (b :: GHC.Types.Bool). Data.HList.FakePrelude.HEqBy f y x b => Data.HList.FakePrelude.HEqBy (Data.HList.HSort.HDown f) x y b
- Data.HList.HSort: instance forall (k :: BOX) (k1 :: BOX) (le :: k1) (x :: k) (y :: k) (b2 :: GHC.Types.Bool) (b1 :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqBy le y x b1, Data.HList.FakePrelude.HNot b1 ~ b2) => Data.HList.FakePrelude.HEqBy (Data.HList.HSort.HNeq le) x y b2
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) (a :: [*]) (b :: [*]) (ok :: GHC.Types.Bool). (Data.HList.FakePrelude.SameLength a b, Data.HList.HSort.HIsAscList le a ok, Data.HList.HSort.HSortBy1 ok le a b) => Data.HList.HSort.HSortBy le a b
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) (a :: [*]) (b :: [*]). Data.HList.HSort.HQSortBy le a b => Data.HList.HSort.HSortBy1 'GHC.Types.False le a b
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) (a :: [*]). Data.HList.HSort.HSortBy1 'GHC.Types.True le a a
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) (ps :: [*]). Data.HList.HSort.HAscList0 le ps ps => Data.HList.HSort.HAscList le ps
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) (ps0 :: [*]). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HAscList0 le '[] ps0
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) (ys :: [*]) (ys0 :: [*]). Data.HList.HSort.HAscList0 le ys ys0 => Data.HList.HSort.HAscList1 le 'GHC.Types.True ys ys0
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) a b (bs :: [*]) (sorted :: [*]) (bGeq :: [*]) (bLt :: [*]) (sortedLt :: [*]) (sortedGeq :: [*]). (Data.HList.HList.HPartitionEq le a (b : bs) bGeq bLt, Data.HList.HSort.HQSortBy le bLt sortedLt, Data.HList.HSort.HQSortBy le bGeq sortedGeq, Data.HList.HList.HAppendListR sortedLt (a : sortedGeq) ~ sorted, Data.HList.HList.HAppendList sortedLt (a : sortedGeq)) => Data.HList.HSort.HQSortBy le (a : b : bs) sorted
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) a b c (cs :: [*]) (sorted :: [*]) (xs' :: [*]) (ys' :: [*]) (ys :: [*]) (xs :: [*]) (n2 :: Data.HList.FakePrelude.HNat) (n :: Data.HList.FakePrelude.HNat). (Data.HList.HSort.HMerge le xs' ys' sorted, Data.HList.HSort.HMSortBy le ys ys', Data.HList.HSort.HMSortBy le xs xs', Data.HList.HList.HLengthEq (a : b : c : cs) n2, Data.HList.FakePrelude.HDiv2 n2 ~ n, Data.HList.HList.HSplitAt n (a : b : c : cs) xs ys) => Data.HList.HSort.HMSortBy le (a : b : c : cs) sorted
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x (ps0 :: [*]). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HAscList0 le '[x] ps0
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x (xs :: [*]) y (ys :: [*]) l (srt :: [*]) (b :: GHC.Types.Bool) (ls :: [*]) (hhs :: [*]). (Data.HList.FakePrelude.HEqBy le x y b, Data.HList.HSort.HMerge1 b (x : xs) (y : ys) (l : ls) hhs, Data.HList.HSort.HMerge le ls hhs srt) => Data.HList.HSort.HMerge le (x : xs) (y : ys) (l : srt)
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x (xs :: [*]). Data.HList.HSort.HMerge le '[] (x : xs) (x : xs)
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x (xs :: [*]). Data.HList.HSort.HMerge le (x : xs) '[] (x : xs)
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x y (ab :: [*]) (b :: GHC.Types.Bool). (Data.HList.HSort.HSort2 b x y ab, Data.HList.FakePrelude.HEqBy le x y b) => Data.HList.HSort.HMSortBy le '[x, y] ab
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x y (ys :: [*]) (b3 :: GHC.Types.Bool) (b1 :: GHC.Types.Bool) (b2 :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqBy le x y b1, Data.HList.HSort.HIsAscList le (y : ys) b2, Data.HList.FakePrelude.HAnd b1 b2 ~ b3) => Data.HList.HSort.HIsAscList le (x : y : ys) b3
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x y (ys :: [*]) (ps0 :: [*]) (b :: GHC.Types.Bool). (Data.HList.HSort.HAscList1 le b (y : ys) ps0, Data.HList.FakePrelude.HEqBy le x y b) => Data.HList.HSort.HAscList0 le (x : y : ys) ps0
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x. Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HIsAscList le '[x] 'GHC.Types.True
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x. Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HMSortBy le '[x] '[x]
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) x. Data.HList.HSort.HQSortBy le '[x] '[x]
- Data.HList.HSort: instance forall (k :: BOX) (le :: k) y (ys :: [*]) (ys0 :: [*]). (Data.HList.FakePrelude.Fail '("Duplicated element", y, "using le", le, "in", ys0), Data.HList.FakePrelude.HEqByFn le) => Data.HList.HSort.HAscList1 le 'GHC.Types.False (y : ys) ys0
- Data.HList.HSort: instance forall (k :: BOX) (le :: k). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HIsAscList le '[] 'GHC.Types.True
- Data.HList.HSort: instance forall (k :: BOX) (le :: k). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HMSortBy le '[] '[]
- Data.HList.HSort: instance forall (k :: BOX) (le :: k). Data.HList.HSort.HMerge le '[] '[] '[]
- Data.HList.HSort: instance forall (k :: BOX) (le :: k). Data.HList.HSort.HQSortBy le '[] '[]
- Data.HList.HSort: instance forall (k :: BOX) (lt :: k) (ps :: [*]) (b :: GHC.Types.Bool) (ps' :: [*]). (Data.HList.HSort.HSortBy lt ps ps', Data.HList.HSort.HIsAscList lt ps' b) => Data.HList.HSort.HIsSetBy lt ps b
- Data.HList.HSort: instance forall (k :: BOX) (lt :: k) (ps :: [*]) (ps' :: [*]). (Data.HList.HSort.HSortBy lt ps ps', Data.HList.HSort.HAscList lt ps') => Data.HList.HSort.HSetBy lt ps
- Data.HList.HSort: instance forall (k :: BOX) (x :: k) (y :: k) (b :: GHC.Types.Bool). Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn (Data.HList.FakePrelude.Label x) (Data.HList.FakePrelude.Label y) b
- Data.HList.HSort: instance forall (k :: BOX) (x :: k) (y :: k) (b :: GHC.Types.Bool). Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn (Data.Proxy.Proxy x) (Data.Proxy.Proxy y) b
- Data.HList.HSort: instance forall (k :: BOX) (x :: k) v (y :: k) w (b :: GHC.Types.Bool). Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn (Data.Tagged.Tagged x v) (Data.Tagged.Tagged y w) b
- Data.HList.HTypeIndexed: instance forall (k :: BOX) (e :: k). Data.HList.HListPrelude.HDeleteMany e (Data.HList.HList.HList '[]) (Data.HList.HList.HList '[])
- Data.HList.HTypeIndexed: instance forall (k :: BOX) (e1 :: k) e (l :: [*]) (l1 :: [*]). Data.HList.HListPrelude.HDeleteMany e1 (Data.HList.HList.HList l) (Data.HList.HList.HList l1) => Data.HList.HTypeIndexed.HDeleteManyCase 'GHC.Types.False e1 e l (e : l1)
- Data.HList.Keyword: instance (r ~ r') => Data.HList.Keyword.KWApply r '[] r'
- Data.HList.Keyword: instance forall (k :: BOX) (arg_types :: [k]) (arg_values :: [*]) kw a f (arg_def :: [*]) r (arg_types' :: [k]). (Data.HList.Keyword.HDelete kw arg_types arg_types', Data.HList.Keyword.KW f (Data.HList.Keyword.Arg arg_types' (kw : a : arg_values)) arg_def r) => Data.HList.Keyword.KWAcc (Data.HList.Keyword.Arg arg_types arg_values) kw a f arg_def r
- Data.HList.Keyword: instance forall (k :: BOX) (e :: k) (e' :: k) (tail :: [k]) (l' :: [k]) (flag :: GHC.Types.Bool). (Data.HList.FakePrelude.HEq e e' flag, Data.HList.Keyword.HDelete' flag e (e' : tail) l') => Data.HList.Keyword.HDelete e (e' : tail) l'
- Data.HList.Keyword: instance forall (k :: BOX) (e :: k) (tail :: [k]) (tail' :: [k]). (tail' ~ tail) => Data.HList.Keyword.HDelete' 'GHC.Types.True e (e : tail) tail'
- Data.HList.Keyword: instance forall (k :: BOX) (k1 :: BOX) (e :: k) (e' :: k1) (tail :: [k1]) (e'tail :: [k1]) (tail' :: [k1]). (Data.HList.Keyword.HDelete e tail tail', e'tail ~ (e' : tail')) => Data.HList.Keyword.HDelete' 'GHC.Types.False e (e' : tail) e'tail
- Data.HList.Keyword: instance forall (k :: BOX) (k1 :: BOX) (e :: k1) (r :: [k]). (Data.HList.FakePrelude.Fail (Data.HList.Keyword.ErrUnexpectedKW e), r ~ '[]) => Data.HList.Keyword.HDelete e '[] r
- Data.HList.Keyword: instance forall (k :: BOX) (k1 :: BOX) (f :: k1) (nil :: [k]). ('[] ~ nil) => Data.HList.Keyword.ReflectFK' 'GHC.Types.False f nil
- Data.HList.Keyword: instance forall (k :: BOX) (s :: k) c r b. (r ~ (c -> b)) => Data.HList.TypeEqO.IsKeyFN (Data.HList.Keyword.K s c -> r) 'GHC.Types.True
- Data.HList.Keyword: instance forall (k :: BOX) (tys :: k) (vals :: [*]). GHC.Show.Show (Data.HList.HList.HList vals) => GHC.Show.Show (Data.HList.Keyword.Arg tys vals)
- Data.HList.Keyword: instance forall (k :: BOX) f (arg_needed :: k) (arg_values :: [*]) (arg_def :: [*]) r. Data.HList.Keyword.KWMerge arg_needed arg_values arg_def f r => Data.HList.Keyword.KW' 'GHC.Types.False f (Data.HList.Keyword.Arg arg_needed arg_values) arg_def r
- Data.HList.Keyword: instance forall (k :: BOX) kw (atail :: k) (arg_values :: [*]) (arg_def :: [*]) f nff. (Data.HList.FakePrelude.Fail (Data.HList.Keyword.ErrReqdArgNotFound kw), nff ~ Data.HList.Keyword.ErrReqdArgNotFound kw) => Data.HList.Keyword.KWMerge' kw '[] atail arg_values arg_def f nff
- Data.HList.Keyword: instance forall (k :: BOX) kw kw' (etc :: [*]) (atail :: k) (arg_values :: [*]) (arg_def :: [*]) f r (flag :: GHC.Types.Bool). (Data.HList.FakePrelude.HEq kw kw' flag, Data.HList.Keyword.KWMerge'' flag kw (kw' : etc) atail arg_values arg_def f r) => Data.HList.Keyword.KWMerge' kw (kw' : etc) atail arg_values arg_def f r
- Data.HList.Keyword: instance forall (k :: BOX) kw kw' v' (tail :: [*]) (atail :: k) (arg_values :: [*]) (arg_def :: [*]) f r. Data.HList.Keyword.KWMerge' kw tail atail arg_values arg_def f r => Data.HList.Keyword.KWMerge'' 'GHC.Types.False kw (kw' : v' : tail) atail arg_values arg_def f r
- Data.HList.Keyword: instance forall (k :: BOX) kw v (tail :: [*]) (atail :: k) (arg_values :: [*]) (arg_def :: [*]) f r. Data.HList.Keyword.KWMerge atail (kw : v : arg_values) arg_def f r => Data.HList.Keyword.KWMerge'' 'GHC.Types.True kw (kw : v : tail) atail arg_values arg_def f r
- Data.HList.Keyword: instance forall (k :: BOX) x y (l :: k) v. (x ~ Data.Tagged.Tagged l v, y ~ Data.HList.HList.HList '[Data.HList.FakePrelude.Label l, v]) => Data.HList.FakePrelude.ApplyAB Data.HList.Keyword.TaggedToKW x y
- Data.HList.Label3: instance forall (k :: BOX) (t :: k) (ix :: Data.HList.FakePrelude.HNat) ns n. (Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label (Data.HList.Label3.Lbl ix ns n)) => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) (Data.HList.Label3.Lbl ix ns n)
- Data.HList.Label6: instance GHC.TypeLits.KnownNat x => Data.HList.FakePrelude.ShowLabel x
- Data.HList.Labelable: instance (Data.HList.TIC.TICPrism s t a b, x ~ a, a ~ b, s ~ t, Data.HList.FakePrelude.SameLength s t) => Data.HList.Labelable.Labelable x Data.HList.TIC.TIC s t a b
- Data.HList.Labelable: instance Data.HList.Labelable.LabelableTIPCxt x s t a b => Data.HList.Labelable.Labelable x Data.HList.TIP.TIP s t a b
- Data.HList.Labelable: instance Data.HList.Labelable.ToSym (label x) x
- Data.HList.Labelable: instance forall (k :: BOX) (k1 :: BOX) (k2 :: BOX) (v1 :: k1 -> k2 -> *) (v2 :: k1) (v3 :: k2) (x :: GHC.TypeLits.Symbol) (p :: * -> k -> *) a (f :: * -> k) b (s :: [*]) (t :: [*]). (Data.HList.Labelable.LabeledTo x (p a (f b)) (p (Data.HList.Labelable.LabeledR s) (f (Data.HList.Labelable.LabeledR t))) ~ v1 v2 v3) => Data.HList.Labelable.ToSym (v1 v2 v3) x
- Data.HList.Labelable: instance forall (k :: BOX) (x :: k) (s :: [*]) (t :: [*]) a b (to :: * -> * -> *). (Data.HList.Variant.HPrism x s t a b, to ~ (->)) => Data.HList.Labelable.Labelable x Data.HList.Variant.Variant s t a b
- Data.HList.Labelable: instance forall (k :: BOX) (x :: k) (s :: [*]) (t :: [*]) a b. Data.HList.Labelable.LabeledCxt1 s t a b => Data.HList.Labelable.Labelable x Data.HList.Labelable.LabeledR s t a b
- Data.HList.Labelable: instance forall (k :: BOX) (x :: k) (s :: [*]) (t :: [*]) a b. Data.HList.Record.HLens x Data.HList.Record.Record s t a b => Data.HList.Labelable.Labelable x Data.HList.Record.Record s t a b
- Data.HList.Labelable: instance forall (k :: BOX) (x :: k) a b. GHC.Show.Show (Data.HList.Labelable.LabeledTo x a b)
- Data.HList.Record: data ExtraField l
- Data.HList.Record: data FieldNotFound l
- Data.HList.Record: instance (Data.HList.HList.HMapCxt Data.HList.HList.HList Data.HList.Record.ReadComponent (Data.HList.HList.AddProxy rs) bs, Data.HList.FakePrelude.ApplyAB Data.HList.Record.ReadComponent (Data.Proxy.Proxy r) readP_r, Data.HList.HList.HProxies rs, Data.HList.HList.HSequence Text.ParserCombinators.ReadP.ReadP (readP_r : bs) (r : rs)) => GHC.Read.Read (Data.HList.Record.Record (r : rs))
- Data.HList.Record: instance (Data.HList.Record.RecordValuesR lvs ~ vs, Data.HList.FakePrelude.SameLabels ls lvs, Data.HList.Record.LabelsOf lvs ~ ls, Data.HList.FakePrelude.SameLengths '[ls, vs, lvs], Data.HList.FakePrelude.HAllTaggedLV lvs) => Data.HList.HListPrelude.HUnzip Data.Proxy.Proxy ls vs lvs
- Data.HList.Record: instance (r1 ~ r1') => Data.HList.Record.UnionSymRec r1 '[] r1'
- Data.HList.Record: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound l) => Data.HList.Record.HRearrange4 l ls '[] rout '[]
- Data.HList.Record: instance Data.HList.HListPrelude.HUnzip Data.Proxy.Proxy ls vs lvs => Data.HList.HListPrelude.HZip Data.Proxy.Proxy ls vs lvs
- Data.HList.Record: instance forall (k :: BOX) (b :: [*]) (l :: k) r v. Data.HList.Record.HasField l r v => Data.HList.Record.HasFieldM1 ('GHC.Base.Just b) l r ('GHC.Base.Just v)
- Data.HList.Record: instance forall (k :: BOX) (k1 :: BOX) (k2 :: BOX) (l1 :: k) (l2 :: k1) (r :: k2). Data.HList.FakePrelude.Fail (Data.HList.Record.DuplicatedLabel l1) => Data.HList.Record.HLabelSet' l1 l2 'GHC.Types.True r
- Data.HList.Record: instance forall (k :: BOX) (k1 :: BOX) (l :: k) (l1 :: k1) v1 (r :: [*]) v (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqK l l1 b, Data.HList.Record.HasField' b l (Data.Tagged.Tagged l1 v1 : r) v) => Data.HList.Record.HasField l (Data.HList.Record.Record (Data.Tagged.Tagged l1 v1 : r)) v
- Data.HList.Record: instance forall (k :: BOX) (k1 :: BOX) (l :: k) v (l' :: k1) e (xs :: [*]) (xs' :: [*]) (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqK l l' b, Data.HList.Record.HUpdateAtLabel1 b l v (Data.Tagged.Tagged l' e : xs) xs') => Data.HList.Record.HUpdateAtLabel2 l v (Data.Tagged.Tagged l' e : xs) xs'
- Data.HList.Record: instance forall (k :: BOX) (ks :: [*]) (l :: k) v (r1 :: [*]) (r3 :: [*]) (b :: GHC.Types.Bool) (r2 :: [*]). (Data.HList.HList.HMember (Data.HList.FakePrelude.Label l) ks b, Data.HList.FakePrelude.HCond b (Data.HList.Record.Record r2) (Data.HList.Record.Record (Data.Tagged.Tagged l v : r2)) (Data.HList.Record.Record r3), Data.HList.Record.HDeleteLabels ks r1 r2) => Data.HList.Record.HDeleteLabels ks (Data.Tagged.Tagged l v : r1) r3
- Data.HList.Record: instance forall (k :: BOX) (l :: [*]) (l' :: k) (lRev :: [*]) (l1 :: k). (Data.HList.HList.HRevAppR l '[] ~ lRev, Data.HList.Record.HExtendRs lRev (Data.Proxy.Proxy '[]) ~ Data.Proxy.Proxy l1, l' ~ l1) => Data.HList.HList.HBuild' l (Data.Proxy.Proxy l')
- Data.HList.Record: instance forall (k :: BOX) (l :: k) (r :: [*] -> *) (xs :: [*]) (v :: GHC.Base.Maybe *) (b :: GHC.Base.Maybe [*]). (Data.HList.HList.HMemberM (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf xs) b, Data.HList.Record.HasFieldM1 b l (r xs) v) => Data.HList.Record.HasFieldM l (r xs) v
- Data.HList.Record: instance forall (k :: BOX) (l :: k) (v :: [*]) (v' :: [*]) (t1 :: [*]). Data.HList.Record.H2ProjectByLabels '[Data.HList.FakePrelude.Label l] v t1 v' => Data.HList.HListPrelude.HDeleteAtLabel Data.HList.Record.Record l v v'
- Data.HList.Record: instance forall (k :: BOX) (l :: k) fld (r :: [*]) v. Data.HList.Record.HasField l (Data.HList.Record.Record r) v => Data.HList.Record.HasField' 'GHC.Types.False l (fld : r) v
- Data.HList.Record: instance forall (k :: BOX) (l :: k) r. Data.HList.Record.HasFieldM1 'GHC.Base.Nothing l r 'GHC.Base.Nothing
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v (a :: [*]). Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.ExtraField l) => Data.HList.Record.HRearrange3 '[] (Data.Tagged.Tagged l v : a) '[]
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v (r :: [*]) (r' :: [*]). (Data.HList.Record.HUpdateAtLabel2 l v r r', Data.HList.Record.HasField l (Data.HList.Record.Record r') v) => Data.HList.Record.HUpdateAtLabel Data.HList.Record.Record l v r r'
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v (r :: [*]). (Data.HList.FakePrelude.ShowLabel l, GHC.Show.Show v, Data.HList.Record.ShowComponents r) => Data.HList.Record.ShowComponents (Data.Tagged.Tagged l v : r)
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v (r :: [*]). Data.HList.Record.HasField' 'GHC.Types.True l (Data.Tagged.Tagged l v : r) v
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v (r :: [*]). Data.HList.Record.RecordValues r => Data.HList.Record.RecordValues (Data.Tagged.Tagged l v : r)
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v e (xs :: [*]). Data.HList.Record.HUpdateAtLabel1 'GHC.Types.True l v (Data.Tagged.Tagged l e : xs) (Data.Tagged.Tagged l v : xs)
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v x (xs :: [*]) (xs' :: [*]). Data.HList.Record.HUpdateAtLabel2 l v xs xs' => Data.HList.Record.HUpdateAtLabel1 'GHC.Types.False l v (x : xs) (x : xs')
- Data.HList.Record: instance forall (k :: BOX) (l :: k) v. Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound l) => Data.HList.Record.HUpdateAtLabel2 l v '[] '[]
- Data.HList.Record: instance forall (k :: BOX) (l :: k). Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound l) => Data.HList.Record.HasField l (Data.HList.Record.Record '[]) (Data.HList.FakePrelude.FieldNotFound l)
- Data.HList.Record: instance forall (k :: BOX) (l1 :: k) (l2 :: k) (r :: [k]) (leq :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqK l1 l2 leq, Data.HList.Record.HLabelSet' l1 l2 leq r) => Data.HList.Record.HLabelSet (l1 : l2 : r)
- Data.HList.Record: instance forall (k :: BOX) (l1 :: k) (l2 :: k) (r :: [k]). (Data.HList.Record.HLabelSet (l2 : r), Data.HList.Record.HLabelSet (l1 : r)) => Data.HList.Record.HLabelSet' l1 l2 'GHC.Types.False r
- Data.HList.Record: instance forall (k :: BOX) (r :: k) (x :: [*] -> *) (s :: [*]) (t :: [*]) a b. Data.HList.Record.HLensCxt r x s t a b => Data.HList.Record.HLens r x s t a b
- Data.HList.Record: instance forall (k :: BOX) (r1 :: [*]) (l :: k) v (r2' :: [*]) (ru :: [*]) (b :: GHC.Types.Bool). (Data.HList.Record.HMemberLabel l r1 b, Data.HList.Record.UnionSymRec' b r1 (Data.Tagged.Tagged l v) r2' ru) => Data.HList.Record.UnionSymRec r1 (Data.Tagged.Tagged l v : r2') ru
- Data.HList.Record: instance forall (k :: BOX) (r1 :: [*]) f2 (r2' :: [*]) (ru :: [*]) (l2 :: k) v2. (Data.HList.Record.UnionSymRec r1 r2' ru, Data.HList.Record.HTPupdateAtLabel Data.HList.Record.Record l2 v2 ru, f2 ~ Data.Tagged.Tagged l2 v2) => Data.HList.Record.UnionSymRec' 'GHC.Types.True r1 f2 r2' ru
- Data.HList.Record: instance forall (k :: BOX) (x :: k) a (as :: [*]) b (bs :: [*]) (abss :: [*]). Data.HList.Record.HZipRecord as bs abss => Data.HList.Record.HZipRecord (Data.Tagged.Tagged x a : as) (Data.Tagged.Tagged x b : bs) (Data.Tagged.Tagged x (a, b) : abss)
- Data.HList.Record: instance forall (k :: BOX) (x :: k). Data.HList.Record.HLabelSet '[x]
- Data.HList.Record: instance forall (k :: BOX) l (ls :: [*]) (l1 :: k) v1 (r1 :: [*]) (rin :: [*]) (rout :: [*]) (b :: GHC.Base.Maybe [*]). (Data.HList.HList.HMemberM (Data.HList.FakePrelude.Label l1) (l : ls) b, Data.HList.Record.H2ProjectByLabels' b (l : ls) (Data.Tagged.Tagged l1 v1 : r1) rin rout) => Data.HList.Record.H2ProjectByLabels (l : ls) (Data.Tagged.Tagged l1 v1 : r1) rin rout
- Data.HList.Record: instance forall (k :: BOX) l (ls :: [*]) (r :: [*]) (r' :: [*]) (rin :: [*]) (rout :: [*]) (ll :: k). (Data.HList.Record.H2ProjectByLabels '[l] r rin rout, Data.HList.Record.HRearrange4 l ls rin rout r', l ~ Data.HList.FakePrelude.Label ll) => Data.HList.Record.HRearrange3 (l : ls) r r'
- Data.HList.Record: instance forall (k :: BOX) ll (ls :: [*]) (l :: k) v (rout :: [*]) (r'' :: [*]) (r' :: [*]). (Data.HList.Record.HRearrange3 ls rout r', r'' ~ (Data.Tagged.Tagged l v : r'), ll ~ Data.HList.FakePrelude.Label l) => Data.HList.Record.HRearrange4 ll ls '[Data.Tagged.Tagged l v] rout r''
- Data.HList.Record: instance forall (k :: BOX) x tx (t :: k). (tx ~ Data.Tagged.Tagged t x) => Data.HList.FakePrelude.ApplyAB Data.HList.Record.TaggedFn x tx
- Data.HList.Record: instance forall (k :: BOX) x y v (l :: k). (GHC.Read.Read v, Data.HList.FakePrelude.ShowLabel l, x ~ Data.Tagged.Tagged l v, Text.ParserCombinators.ReadP.ReadP x ~ y) => Data.HList.FakePrelude.ApplyAB Data.HList.Record.ReadComponent (Data.Proxy.Proxy x) y
- Data.HList.RecordU: instance forall (k :: BOX) (k1 :: BOX) tv1 tv2 (rest :: [*]) t1v (t1 :: k) v t2v (t2 :: k1). (t1v ~ Data.Tagged.Tagged t1 v, t2v ~ Data.Tagged.Tagged t2 v, Data.HList.RecordU.ElemTyEq (tv2 : rest)) => Data.HList.RecordU.ElemTyEq (tv1 : tv2 : rest)
- Data.HList.RecordU: instance forall (k :: BOX) (k1 :: BOX) txv tyw (b :: GHC.Types.Bool) (x :: k) v (y :: k1) w. (txv ~ Data.Tagged.Tagged x v, tyw ~ Data.Tagged.Tagged y w, Data.HList.FakePrelude.HEq v w b) => Data.HList.FakePrelude.HEqBy Data.HList.RecordU.EqTagValue txv tyw b
- Data.HList.RecordU: instance forall (k :: BOX) (l :: k) (ls :: [*]) v (n :: Data.HList.FakePrelude.HNat). (Data.Array.Base.IArray Data.Array.Base.UArray v, v ~ Data.HList.RecordU.GetElemTy ls, Data.HList.Record.HFindLabel l ls n, Data.HList.FakePrelude.HNat2Integral n) => Data.HList.Record.HasField l (Data.HList.RecordU.RecordU ls) v
- Data.HList.RecordU: instance forall (k :: BOX) (l :: k) (ls :: [k]) (r :: [k]) (n :: Data.HList.FakePrelude.HNat) (ns :: [Data.HList.FakePrelude.HNat]). (Data.HList.HList.HFind l r n, Data.HList.RecordU.HFindMany ls r ns) => Data.HList.RecordU.HFindMany (l : ls) r (n : ns)
- Data.HList.RecordU: instance forall (k :: BOX) (l :: k) (r :: [*]) v (n :: Data.HList.FakePrelude.HNat) (u :: [*]). (Data.HList.Record.HFindLabel l r n, Data.HList.RecordU.HLookupByHNatUS n u (Data.Tagged.Tagged l v), Data.HList.Record.HasField l (Data.HList.Record.Record r) v, Data.HList.RecordU.RecordUSCxt r u) => Data.HList.Record.HasField l (Data.HList.RecordU.RecordUS r) v
- Data.HList.RecordU: instance forall (k :: BOX) (l :: k) v (r :: [*]) (r' :: [*]) (n :: Data.HList.FakePrelude.HNat). (r ~ r', v ~ Data.HList.RecordU.GetElemTy r, Data.HList.Record.HFindLabel l r n, Data.HList.FakePrelude.HNat2Integral n, Data.Array.Base.IArray Data.Array.Base.UArray v, Data.HList.Record.HasField l (Data.HList.Record.Record r') v) => Data.HList.Record.HUpdateAtLabel Data.HList.RecordU.RecordU l v r r'
- Data.HList.RecordU: instance forall (k :: BOX) (r :: [k]). Data.HList.RecordU.HFindMany '[] r '[]
- Data.HList.RecordU: instance forall (k :: BOX) (t :: Data.HList.FakePrelude.HNat) (n :: Data.HList.FakePrelude.HNat) (u :: [*]) (us :: [*]) le (l :: k) e. (Data.HList.FakePrelude.HNat2Integral n, Data.HList.HArray.HLookupByHNatR n u ~ le, le ~ Data.Tagged.Tagged l e, Data.Array.Base.IArray Data.Array.Base.UArray e, e ~ Data.HList.RecordU.GetElemTy u) => Data.HList.RecordU.HLookupByHNatUS1 ('Data.Either.Left t) n u us le
- Data.HList.RecordU: instance forall (k :: BOX) (x :: k) (s :: [*]) (t :: [*]) a b. (s ~ t, a ~ b, Data.Array.Base.IArray Data.Array.Base.UArray a, a ~ Data.HList.RecordU.GetElemTy s, Data.HList.Record.HLensCxt x Data.HList.RecordU.RecordU s t a b) => Data.HList.Labelable.Labelable x Data.HList.RecordU.RecordU s t a b
- Data.HList.RecordU: instance forall (k :: BOX) t1v (rest :: [*]) (t :: k) v. (t1v ~ Data.Tagged.Tagged t v) => Data.HList.RecordU.ElemTyEq (t1v : rest)
- Data.HList.TIP: instance (Data.HList.FakePrelude.Fail '(Data.HList.HOccurs.TypeNotFound op, "in TIP", db), GHC.Base.Monad m) => Data.HList.TIP.TransTIPM1 'GHC.Types.False 'Data.HList.FakePrelude.HZero m op db
- Data.HList.TIP: instance (Data.HList.HList.HZipList (Data.HList.TIP.UntagR x) (Data.HList.TIP.UntagR y) (Data.HList.TIP.UntagR xy), Data.HList.TIP.UntagTag x, Data.HList.TIP.UntagTag y, Data.HList.TIP.UntagTag xy, Data.HList.FakePrelude.SameLengths '[x, y, xy], Data.HList.TIP.HTypeIndexed x, Data.HList.TIP.HTypeIndexed y, Data.HList.HListPrelude.HUnzip Data.HList.TIP.TIP x y xy) => Data.HList.HListPrelude.HZip Data.HList.TIP.TIP x y xy
- Data.HList.TIP: instance (Data.HList.HList.HZipList (Data.HList.TIP.UntagR x) (Data.HList.TIP.UntagR y) (Data.HList.TIP.UntagR xy), Data.HList.TIP.UntagTag x, Data.HList.TIP.UntagTag y, Data.HList.TIP.UntagTag xy, Data.HList.TIP.HTypeIndexed x, Data.HList.TIP.HTypeIndexed y, Data.HList.FakePrelude.SameLengths '[x, y, xy]) => Data.HList.HListPrelude.HUnzip Data.HList.TIP.TIP x y xy
- Data.HList.TIP: instance (tee ~ Data.Tagged.Tagged e e) => Data.HList.HListPrelude.HOccurs e (Data.HList.TIP.TIP '[tee])
- Data.HList.TIP: instance Data.HList.FakePrelude.Fail '(Data.HList.HOccurs.TypeNotFound arg, "in TIP", db) => Data.HList.TIP.TransTIP2 'GHC.Types.False arg op db
- Data.HList.TIP: instance Data.HList.FakePrelude.Fail '(Data.HList.HOccurs.TypeNotFound notfun, "in TIP", db) => Data.HList.TIP.TransTIP1 'GHC.Types.False 'Data.HList.FakePrelude.HZero notfun db
- Data.HList.TIP: instance Data.HList.FakePrelude.Fail '(Data.HList.HOccurs.TypeNotFound op, "in TIP", db) => Data.HList.TIP.TransTIPM2 'GHC.Types.False m arg op db
- Data.HList.TIP: instance forall (k :: BOX) (e :: k) (v :: [*]) (v' :: [*]). (Data.HList.HListPrelude.HDeleteAtLabel Data.HList.Record.Record e v v', Data.HList.TIP.HTypeIndexed v') => Data.HList.HListPrelude.HDeleteAtLabel Data.HList.TIP.TIP e v v'
- Data.HList.TIP: instance forall (k :: BOX) tee (l :: [*]) (e :: k) e'. (Data.HList.TIP.HAllTaggedEq l, tee ~ Data.Tagged.Tagged e e') => Data.HList.TIP.HAllTaggedEq (tee : l)
- Data.HList.TypeEqO: instance ('GHC.Types.False ~ b) => Data.HList.TypeEqO.TupleType x b
- Data.HList.TypeEqO: instance ('GHC.Types.False ~ flag) => Data.HList.TypeEqO.IsKeyFN t flag
- Data.HList.TypeEqO: instance (hZero ~ 'Data.HList.FakePrelude.HZero) => Data.HList.FakePrelude.ArityFwd f hZero
- Data.HList.TypeEqO: instance forall (k :: BOX) (x :: k) (y :: k) (b :: GHC.Types.Bool). ('GHC.Types.False ~ b) => Data.HList.FakePrelude.HEq x y b
- Data.HList.TypeEqO: instance forall (k :: BOX) (x :: k). Data.HList.FakePrelude.HEq x x 'GHC.Types.True
- Data.HList.Variant: instance forall (k :: BOX) (b :: k). Data.HList.FakePrelude.Fail "Unvariant applied to empty variant" => Data.HList.Variant.Unvariant1 b '[] (Data.Proxy.Proxy "Unvariant applied to empty variant")
- Data.HList.Variant: instance forall (k :: BOX) (fs :: [*]) lv (vs :: [*]) lv' (rs :: [*]) (l :: k) v v' (b :: GHC.Base.Maybe [*]) (f :: GHC.Base.Maybe *). (lv ~ Data.Tagged.Tagged l v, lv' ~ Data.Tagged.Tagged l v', Data.HList.HList.HMemberM (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf fs) b, Data.HList.Record.HasFieldM l (Data.HList.Record.Record fs) f, Data.HList.Record.DemoteMaybe (v -> v) f ~ (v -> v'), Data.HList.Variant.MkVariant l v' (lv' : rs), Data.HList.Variant.ZipVR fs vs rs) => Data.HList.Variant.ZipVR fs (lv : vs) (lv' : rs)
- Data.HList.Variant: instance forall (k :: BOX) (k1 :: BOX) (s :: k) a (t :: k1) a' (xs :: [*]) (b3 :: GHC.Types.Bool) (b :: GHC.Types.Bool) (b2 :: GHC.Types.Bool). (Data.HList.FakePrelude.HEq a a' b, Data.HList.Variant.HAllEqVal (Data.Tagged.Tagged t a' : xs) b2, Data.HList.FakePrelude.HAnd b b2 ~ b3) => Data.HList.Variant.HAllEqVal (Data.Tagged.Tagged s a : Data.Tagged.Tagged t a' : xs) b3
- Data.HList.Variant: instance forall (k :: BOX) (k1 :: BOX) (s :: k1) x (xs :: [*]) z (t :: k) (sx :: [*]). (GHC.Enum.Bounded x, GHC.Enum.Bounded z, Data.HList.HList.HRevAppR (Data.Tagged.Tagged s x : xs) '[] ~ (Data.Tagged.Tagged t z : sx), Data.HList.Variant.MkVariant t z (Data.Tagged.Tagged s x : xs)) => GHC.Enum.Bounded (Data.HList.Variant.Variant (Data.Tagged.Tagged s x : xs))
- Data.HList.Variant: instance forall (k :: BOX) (k1 :: BOX) ta' ta (xs :: [*]) a' a (t :: k) (t' :: k1). (Data.HList.Variant.HAllEqVal' (ta : xs), a' ~ a, ta ~ Data.Tagged.Tagged t a, ta' ~ Data.Tagged.Tagged t' a') => Data.HList.Variant.HAllEqVal' (ta' : ta : xs)
- Data.HList.Variant: instance forall (k :: BOX) (l :: k) e (v :: [*]) (v' :: [*]) (n :: Data.HList.FakePrelude.HNat) _e. Data.HList.Variant.HUpdateVariantAtLabelCxt l e v v' n _e => Data.HList.Record.HUpdateAtLabel Data.HList.Variant.Variant l e v v'
- Data.HList.Variant: instance forall (k :: BOX) (l :: k) e (v :: [*]). (Data.HList.Variant.MkVariant l e v, Data.Data.Data e) => Data.HList.Variant.GunfoldVariant '[Data.Tagged.Tagged l e] v
- Data.HList.Variant: instance forall (k :: BOX) (l :: k) e (xs :: [*]). (Data.HList.FakePrelude.ShowLabel l, Data.HList.Variant.VariantConstrs xs) => Data.HList.Variant.VariantConstrs (Data.Tagged.Tagged l e : xs)
- Data.HList.Variant: instance forall (k :: BOX) (l :: k) e b (bs :: [*]) (v :: [*]). (Data.HList.Variant.MkVariant l e v, Data.Data.Data e, Data.HList.Variant.GunfoldVariant (b : bs) v) => Data.HList.Variant.GunfoldVariant (Data.Tagged.Tagged l e : b : bs) v
- Data.HList.Variant: instance forall (k :: BOX) (l :: k) v (vs :: [*]). (Data.HList.FakePrelude.ShowLabel l, GHC.Read.Read v, Data.HList.Variant.ReadVariant vs, Data.HList.HListPrelude.HOccursNot (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf vs)) => Data.HList.Variant.ReadVariant (Data.Tagged.Tagged l v : vs)
- Data.HList.Variant: instance forall (k :: BOX) (l :: k) v w (ws :: [*]). (Data.HList.FakePrelude.ShowLabel l, GHC.Show.Show v, Data.HList.Variant.ShowVariant (w : ws)) => Data.HList.Variant.ShowVariant (Data.Tagged.Tagged l v : w : ws)
- Data.HList.Variant: instance forall (k :: BOX) (s :: k) x y (z :: [*]). (GHC.Enum.Enum x, GHC.Enum.Bounded x, GHC.Enum.Enum (Data.HList.Variant.Variant (y : z))) => GHC.Enum.Enum (Data.HList.Variant.Variant (Data.Tagged.Tagged s x : y : z))
- Data.HList.Variant: instance forall (k :: BOX) (s :: k) x. GHC.Enum.Enum x => GHC.Enum.Enum (Data.HList.Variant.Variant '[Data.Tagged.Tagged s x])
- Data.HList.Variant: instance forall (k :: BOX) (t :: [*]) lv (y :: [*]) (l :: k) v. (Data.HList.Variant.MkVariant l v y, lv ~ Data.Tagged.Tagged l v) => Data.HList.Variant.ProjectExtendVariant' ('GHC.Base.Just t) lv y
- Data.HList.Variant: instance forall (k :: BOX) (t :: k) x a (b :: [*]). (GHC.Base.Monoid x, GHC.Base.Monoid (Data.HList.Variant.Variant (a : b))) => GHC.Base.Monoid (Data.HList.Variant.Variant (Data.Tagged.Tagged t x : a : b))
- Data.HList.Variant: instance forall (k :: BOX) (t :: k) x. (Data.HList.Variant.Unvariant '[Data.Tagged.Tagged t x] x, GHC.Base.Monoid x) => GHC.Base.Monoid (Data.HList.Variant.Variant '[Data.Tagged.Tagged t x])
- Data.HList.Variant: instance forall (k :: BOX) (x :: [*]) ty (ys :: [*]) (t :: k) y. (Data.HList.Variant.ProjectVariant x ys, Data.HList.Record.HasField t (Data.HList.Variant.Variant x) (GHC.Base.Maybe y), Data.HList.HListPrelude.HOccursNot (Data.HList.FakePrelude.Label t) (Data.HList.Record.LabelsOf ys), ty ~ Data.Tagged.Tagged t y) => Data.HList.Variant.ProjectVariant x (ty : ys)
- Data.HList.Variant: instance forall (k :: BOX) (x :: k) (s :: [*]) (t :: [*]) a b (si :: [*]) (so :: [*]) (ti :: [*]) (to :: [*]). (Data.HList.Variant.MkVariant x b t, Data.HList.Record.HasField x (Data.HList.Variant.Variant s) (GHC.Base.Maybe a), Data.HList.FakePrelude.SameLength s t, Data.HList.FakePrelude.SameLabels s t, Data.HList.Record.H2ProjectByLabels '[Data.HList.FakePrelude.Label x] s si so, Data.HList.Record.H2ProjectByLabels '[Data.HList.FakePrelude.Label x] t ti to, so ~ to, Data.HList.Record.HUpdateAtLabel Data.HList.Variant.Variant x b s t, Data.HList.Record.HUpdateAtLabel Data.HList.Variant.Variant x a t s) => Data.HList.Variant.HPrism x s t a b
- Data.HList.Variant: instance forall (k :: BOX) (x :: k) (vs :: [*]) a (n :: Data.HList.FakePrelude.HNat). (Data.HList.Record.HasField x (Data.HList.Record.Record vs) a, Data.HList.Record.HFindLabel x vs n, Data.HList.FakePrelude.HNat2Integral n) => Data.HList.Record.HasField x (Data.HList.Variant.Variant vs) (GHC.Base.Maybe a)
- Data.HList.Variant: instance forall (k :: BOX) (x :: k) v (vs :: [*]) (n :: Data.HList.FakePrelude.HNat). (Data.HList.Record.HFindLabel x vs n, Data.HList.FakePrelude.HNat2Integral n, Data.HList.Record.HasField x (Data.HList.Variant.Variant vs) (GHC.Base.Maybe v)) => Data.HList.Variant.MkVariant x v vs
- Data.HList.Variant: instance forall (k :: BOX) a (b :: [*]) v (l :: k). (Data.HList.Variant.Unvariant '[a] v, a ~ Data.Tagged.Tagged l v, Data.Data.Data v, Data.HList.Variant.MkVariant l v b) => Data.HList.Variant.GfoldlVariant '[a] b
- Data.HList.Variant: instance forall (k :: BOX) a b (c :: [*]) (r :: [*]) (l :: k) v. (a ~ Data.Tagged.Tagged l v, Data.HList.Variant.MkVariant l v r, Data.Data.Data v, Data.HList.Variant.GfoldlVariant (b : c) r) => Data.HList.Variant.GfoldlVariant (a : b : c) r
- Data.HList.Variant: instance forall (k :: BOX) le (v :: [*]) (l :: k) e. (le ~ Data.Tagged.Tagged l (GHC.Base.Maybe e), Data.HList.HListPrelude.HOccursNot (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf v)) => Data.HList.HListPrelude.HExtend le (Data.HList.Variant.Variant v)
- Data.HList.Variant: instance forall (k :: BOX) le (x :: [*]) e (l :: k). (Data.HList.FakePrelude.HAllTaggedLV x, Data.HList.Variant.Unvariant '[le] e, Data.HList.Variant.MkVariant l e x, le ~ Data.Tagged.Tagged l e) => Data.HList.Variant.ExtendsVariant '[le] x
- Data.HList.Variant: instance forall (k :: BOX) le b (bs :: [*]) (y :: [*]) (l :: k) e. (Data.HList.Variant.MkVariant l e y, le ~ Data.Tagged.Tagged l e, Data.HList.Variant.ExtendsVariant (b : bs) y) => Data.HList.Variant.ExtendsVariant (le : b : bs) y
- Data.HList.Variant: instance forall (k :: BOX) lv (l :: k) v. (Data.HList.FakePrelude.ShowLabel l, GHC.Show.Show v, lv ~ Data.Tagged.Tagged l v) => Data.HList.Variant.ShowVariant '[lv]
- Data.HList.Variant: instance forall (k :: BOX) lv (xs :: [*]) (y :: [*]) (l :: k) v (inY :: GHC.Base.Maybe [*]). (lv ~ Data.Tagged.Tagged l v, Data.HList.HList.HMemberM lv y inY, Data.HList.Variant.ProjectExtendVariant' inY lv y, Data.HList.Variant.ProjectExtendVariant xs y) => Data.HList.Variant.ProjectExtendVariant (lv : xs) y
- Data.HList.Variant: instance forall (k :: BOX) tx (v :: [*]) tmx (r :: [*]) (nr :: Data.HList.FakePrelude.HNat) (t :: k) x. (Data.HList.Variant.VariantToHMaybied v r, Data.HList.HList.HReplicateF nr Data.HList.Variant.ConstTaggedNothing () r, tx ~ Data.Tagged.Tagged t x, tmx ~ Data.Tagged.Tagged t (GHC.Base.Maybe x)) => Data.HList.Variant.VariantToHMaybied (tx : v) (tmx : r)
- Data.HList.Variant: instance forall (k :: BOX) tx (xs :: [*]) ty (ys :: [*]) txy (zs :: [*]) (t :: k) x y. (tx ~ Data.Tagged.Tagged t x, ty ~ Data.Tagged.Tagged t y, txy ~ Data.Tagged.Tagged t (x, y), Data.HList.Variant.ZipVariant xs ys zs, Data.HList.Variant.MkVariant t (x, y) (txy : zs)) => Data.HList.Variant.ZipVariant (tx : xs) (ty : ys) (txy : zs)
- Data.HList.Variant: instance forall (k :: BOX) tx ty txy (t :: k) x y. (Data.HList.Variant.Unvariant '[txy] txy, tx ~ Data.Tagged.Tagged t x, ty ~ Data.Tagged.Tagged t y, txy ~ Data.Tagged.Tagged t (x, y)) => Data.HList.HListPrelude.HUnzip Data.HList.Variant.Variant '[tx] '[ty] '[txy]
- Data.HList.Variant: instance forall (k :: BOX) tx x2 (xs :: [*]) ty y2 (ys :: [*]) txy xy2 (xys :: [*]) (t :: k) x y. (Data.HList.HListPrelude.HUnzip Data.HList.Variant.Variant (x2 : xs) (y2 : ys) (xy2 : xys), tx ~ Data.Tagged.Tagged t x, ty ~ Data.Tagged.Tagged t y, txy ~ Data.Tagged.Tagged t (x, y)) => Data.HList.HListPrelude.HUnzip Data.HList.Variant.Variant (tx : x2 : xs) (ty : y2 : ys) (txy : xy2 : xys)
- Data.HList.Variant: instance forall (k :: BOX) v (vs :: [*]) e (t1 :: k). (v ~ Data.Tagged.Tagged t1 e) => Data.HList.Variant.Unvariant1 'GHC.Types.True (v : vs) e
- Data.HList.Variant: instance forall (k :: BOX) x y (t :: k) e (v :: [*]). (x ~ (Data.Tagged.Tagged t (GHC.Base.Maybe e), [Data.HList.Variant.Variant v]), y ~ [Data.HList.Variant.Variant (Data.Tagged.Tagged t e : v)], Data.HList.Variant.MkVariant t e (Data.Tagged.Tagged t e : v)) => Data.HList.FakePrelude.ApplyAB Data.HList.Variant.HMaybiedToVariantFs x y
- Data.HList.Variant: instance forall (k :: BOX) x y (t :: k) e. (y ~ Data.Tagged.Tagged t (GHC.Base.Maybe e)) => Data.HList.FakePrelude.ApplyAB Data.HList.Variant.ConstTaggedNothing x y
+ Data.HList: infixr 9 #
+ Data.HList.CommonMain: class HasFieldPath (needJust :: Bool) (ls :: [*]) r v | needJust ls r -> v
+ Data.HList.CommonMain: dredge :: (EnsureLabel x Label k2 l, HSingleton ErrorMessage ErrorMessage [*] NonUnique * * k2 r v l TypesDontMatch * [[*]] [*] * r ns1 vs1 v ns2 xs, HGuardNonNull ErrorMessage [*] NamesDontMatch * [[*]] k2 r ns l ns1, FilterVEq1 [*] v vs1 ns1 ns2, FilterLastEq * * Label k2 l ns vs vs1, FilterLastEq * [*] Label k2 l ns ns ns1, MapFieldTreeVal r TryCollectionListTF r vs, MapFieldTree TryCollectionListTF r ns, LabelablePath xs p v fb p r rft, SameLength' [*] * ns vs, SameLength' [*] * ns1 vs1, SameLength' * [*] vs ns, SameLength' * [*] vs1 ns1) => x -> p v fb -> p r rft
+ Data.HList.CommonMain: dredge' :: (SameLength' * [*] vs1 ns1, SameLength' * [*] vs ns, SameLength' [*] * ns1 vs1, SameLength' [*] * ns vs, LabelablePath xs p a f a p s f s, MapFieldTree TryCollectionListTF s ns, MapFieldTreeVal s TryCollectionListTF s vs, FilterLastEq * [*] Label k l ns ns ns1, FilterLastEq * * Label k l ns vs vs1, FilterVEq1 [*] a vs1 ns1 ns2, HGuardNonNull ErrorMessage [*] NamesDontMatch * [[*]] k s ns l ns1, HSingleton ErrorMessage ErrorMessage [*] NonUnique * * k s a l TypesDontMatch * [[*]] [*] * s ns1 vs1 a ns2 xs, EnsureLabel x Label k l) => x -> p a f a -> p s f s
+ Data.HList.CommonMain: dredgeND :: (EnsureLabel x Label k2 l, HSingleton ErrorMessage ErrorMessage [*] NonUnique' * k2 r l NamesDontMatch * [[*]] k2 r ns l ns' xs, FilterLastEq * [*] Label k2 l ns ns ns', MapFieldTree TryCollectionListTF r ns, LabelablePath xs p a fb p r rft) => x -> p a fb -> p r rft
+ Data.HList.CommonMain: dredgeND' :: (LabelablePath xs p a f a p s f s, MapFieldTree TryCollectionListTF s ns, FilterLastEq * [*] Label k l ns ns ns', HSingleton ErrorMessage ErrorMessage [*] NonUnique' * k s l NamesDontMatch * [[*]] k s ns l ns' xs, EnsureLabel x Label k l) => x -> p a f a -> p s f s
+ Data.HList.CommonMain: dredgeTI' :: (HSingleton ErrorMessage ErrorMessage [*] NonUnique' * * s a NamesDontMatch * [[*]] * s ns a ns' xs, FilterLastEq * [*] Label * a ns ns ns', MapFieldTree TryCollectionListTF s ns, LabelablePath xs p a f a p s f s) => q a -> p a f a -> p s f s
+ Data.HList.CommonMain: hLookupByLabelDredge :: (HSingleton ErrorMessage ErrorMessage [*] NonUnique' * k r2 l NamesDontMatch * [[*]] k r2 ns l ns' ls, FilterLastEq * [*] Label k l ns ns ns', MapFieldTree TryCollectionListTF r2 ns, HasFieldPath False ls r1 r2 v) => Label k l -> r1 r2 -> v
+ Data.HList.Data: [GfoldlK] :: (forall d b. Data d => c (d -> b) -> d -> c b) -> GfoldlK c
+ Data.HList.Data: [GunfoldK] :: (forall b r. Data b => c (b -> r) -> c r) -> GunfoldK c
+ Data.HList.Data: instance forall k (xs :: [*]) (x :: k) t. (Data.HList.Data.RecordLabelsStr xs, Data.HList.FakePrelude.ShowLabel x) => Data.HList.Data.RecordLabelsStr (Data.Tagged.Tagged x t : xs)
+ Data.HList.Data: instance forall k (xs :: [k]) (x :: k). (Data.HList.Data.RecordLabelsStr2 xs, Data.HList.FakePrelude.ShowLabel x) => Data.HList.Data.RecordLabelsStr2 (x : xs)
+ Data.HList.Dredge: class ConsTrue (b :: Bool) (x :: k) (xs :: [k]) (r :: [k]) | b x xs -> r, r b -> xs, x xs r -> b
+ Data.HList.Dredge: class FieldTree (r :: *) (v :: [[*]]) | r -> v
+ Data.HList.Dredge: class FieldTreeVal (r :: *) (v :: [*]) | r -> v
+ Data.HList.Dredge: class FilterLastEq (x :: k) (xs :: [[k]]) (ys :: [m]) (ys' :: [m]) | x xs ys -> ys'
+ Data.HList.Dredge: class FilterVEq (v :: *) (vs :: [*]) (ns :: [k]) (ns' :: [k]) | v vs ns -> ns'
+ Data.HList.Dredge: class FilterVEq1 (v :: *) (vs :: [*]) (ns :: [k]) (ns' :: [k]) | v vs ns -> ns'
+ Data.HList.Dredge: class HGuardNonNull emptymsg (xs :: [k])
+ Data.HList.Dredge: class HSingleton (msgAmb :: m) (msgEmpty :: m2) (ns :: [k]) (p :: k) | ns -> p
+ Data.HList.Dredge: class HasFieldPath (needJust :: Bool) (ls :: [*]) r v | needJust ls r -> v
+ Data.HList.Dredge: class LabelPathEndingWith (r :: *) (l :: k) (path :: [*]) | r l -> path
+ Data.HList.Dredge: class LabelablePath (xs :: [*]) apb spt | spt xs -> apb
+ Data.HList.Dredge: class MapCons (x :: k) (xs :: [[k]]) (xxs :: [[k]]) | x xs -> xxs
+ Data.HList.Dredge: class MapFieldTree (ns :: Maybe [*]) (vs :: [[*]]) | ns -> vs
+ Data.HList.Dredge: class MapFieldTreeVal (r :: *) (ns :: Maybe [*]) (vs :: [*]) | r ns -> vs
+ Data.HList.Dredge: dredge :: (EnsureLabel x Label k2 l, HSingleton ErrorMessage ErrorMessage [*] NonUnique * * k2 r v l TypesDontMatch * [[*]] [*] * r ns1 vs1 v ns2 xs, HGuardNonNull ErrorMessage [*] NamesDontMatch * [[*]] k2 r ns l ns1, FilterVEq1 [*] v vs1 ns1 ns2, FilterLastEq * * Label k2 l ns vs vs1, FilterLastEq * [*] Label k2 l ns ns ns1, MapFieldTreeVal r TryCollectionListTF r vs, MapFieldTree TryCollectionListTF r ns, LabelablePath xs p v fb p r rft, SameLength' [*] * ns vs, SameLength' [*] * ns1 vs1, SameLength' * [*] vs ns, SameLength' * [*] vs1 ns1) => x -> p v fb -> p r rft
+ Data.HList.Dredge: dredge' :: (SameLength' * [*] vs1 ns1, SameLength' * [*] vs ns, SameLength' [*] * ns1 vs1, SameLength' [*] * ns vs, LabelablePath xs p a f a p s f s, MapFieldTree TryCollectionListTF s ns, MapFieldTreeVal s TryCollectionListTF s vs, FilterLastEq * [*] Label k l ns ns ns1, FilterLastEq * * Label k l ns vs vs1, FilterVEq1 [*] a vs1 ns1 ns2, HGuardNonNull ErrorMessage [*] NamesDontMatch * [[*]] k s ns l ns1, HSingleton ErrorMessage ErrorMessage [*] NonUnique * * k s a l TypesDontMatch * [[*]] [*] * s ns1 vs1 a ns2 xs, EnsureLabel x Label k l) => x -> p a f a -> p s f s
+ Data.HList.Dredge: dredgeND :: (EnsureLabel x Label k2 l, HSingleton ErrorMessage ErrorMessage [*] NonUnique' * k2 r l NamesDontMatch * [[*]] k2 r ns l ns' xs, FilterLastEq * [*] Label k2 l ns ns ns', MapFieldTree TryCollectionListTF r ns, LabelablePath xs p a fb p r rft) => x -> p a fb -> p r rft
+ Data.HList.Dredge: dredgeND' :: (LabelablePath xs p a f a p s f s, MapFieldTree TryCollectionListTF s ns, FilterLastEq * [*] Label k l ns ns ns', HSingleton ErrorMessage ErrorMessage [*] NonUnique' * k s l NamesDontMatch * [[*]] k s ns l ns' xs, EnsureLabel x Label k l) => x -> p a f a -> p s f s
+ Data.HList.Dredge: dredgeTI' :: (HSingleton ErrorMessage ErrorMessage [*] NonUnique' * * s a NamesDontMatch * [[*]] * s ns a ns' xs, FilterLastEq * [*] Label * a ns ns ns', MapFieldTree TryCollectionListTF s ns, LabelablePath xs p a f a p s f s) => q a -> p a f a -> p s f s
+ Data.HList.Dredge: getSAfromOutputOptic :: (p a fb -> p rs rft) ~ stab => (Proxy (rs :: *) -> Proxy (a :: *) -> stab) -> stab
+ Data.HList.Dredge: hLens'Path :: LabelablePath xs apb spt => Label xs -> apb -> spt
+ Data.HList.Dredge: hLookupByLabelDredge :: (HSingleton ErrorMessage ErrorMessage [*] NonUnique' * k r2 l NamesDontMatch * [[*]] k r2 ns l ns' ls, FilterLastEq * [*] Label k l ns ns ns', MapFieldTree TryCollectionListTF r2 ns, HasFieldPath False ls r1 r2 v) => Label k l -> r1 r2 -> v
+ Data.HList.Dredge: hLookupByLabelPath :: HasFieldPath False ls r v => Label ls -> r -> v
+ Data.HList.Dredge: hLookupByLabelPath1 :: HasFieldPath needJust ls r v => Proxy needJust -> Label ls -> r -> v
+ Data.HList.Dredge: instance (Data.HList.Dredge.TryCollectionList r ns, Data.HList.Dredge.MapFieldTree ns vs) => Data.HList.Dredge.FieldTree r vs
+ Data.HList.Dredge: instance (Data.HList.Dredge.TryCollectionList r ns, Data.HList.Dredge.MapFieldTreeVal r ns v) => Data.HList.Dredge.FieldTreeVal r v
+ Data.HList.Dredge: instance Data.HList.Dredge.FilterVEq v '[] '[] '[]
+ Data.HList.Dredge: instance Data.HList.Dredge.FilterVEq1 v '[] '[] '[]
+ Data.HList.Dredge: instance Data.HList.Dredge.HasFieldPath 'GHC.Types.False '[] v v
+ Data.HList.Dredge: instance Data.HList.Dredge.HasFieldPath 'GHC.Types.True '[] v (GHC.Base.Maybe v)
+ Data.HList.Dredge: instance Data.HList.Dredge.MapFieldTree 'GHC.Base.Nothing '[]
+ Data.HList.Dredge: instance Data.HList.Dredge.MapFieldTree ('GHC.Base.Just '[]) '[]
+ Data.HList.Dredge: instance Data.HList.Dredge.MapFieldTreeVal r 'GHC.Base.Nothing '[]
+ Data.HList.Dredge: instance Data.HList.Dredge.MapFieldTreeVal r ('GHC.Base.Just '[]) '[]
+ Data.HList.Dredge: instance forall a (x :: a) (xs :: [a]). Data.HList.Dredge.ConsTrue 'GHC.Types.True x xs (x : xs)
+ Data.HList.Dredge: instance forall a1 (x :: a1) (b :: [[a1]]) (r :: [[a1]]) (a2 :: [a1]). Data.HList.Dredge.MapCons x b r => Data.HList.Dredge.MapCons x (a2 : b) ((x : a2) : r)
+ Data.HList.Dredge: instance forall k (l :: k) (r :: [*]) u (ls :: [*]) v (needJust :: GHC.Types.Bool). (Data.HList.Record.HasField l (Data.HList.Variant.Variant r) (GHC.Base.Maybe u), Data.HList.Dredge.HasFieldPath 'GHC.Types.True ls u (GHC.Base.Maybe v)) => Data.HList.Dredge.HasFieldPath needJust (Data.HList.FakePrelude.Label l : ls) (Data.HList.Variant.Variant r) (GHC.Base.Maybe v)
+ Data.HList.Dredge: instance forall k (l :: k) (r :: [*]) u (needJust :: GHC.Types.Bool) (ls :: [*]) v. (Data.HList.Record.HasField l (Data.HList.Record.Record r) u, Data.HList.Dredge.HasFieldPath needJust ls u v) => Data.HList.Dredge.HasFieldPath needJust (Data.HList.FakePrelude.Label l : ls) (Data.HList.Record.Record r) v
+ Data.HList.Dredge: instance forall k (x :: k) (xs :: [k]). Data.HList.Dredge.ConsTrue 'GHC.Types.False x xs xs
+ Data.HList.Dredge: instance forall k (x :: k). Data.HList.Dredge.MapCons x '[] '[]
+ Data.HList.Dredge: instance forall k (xs :: [*]) (vs3 :: [[*]]) v (vs1 :: [[*]]) (n :: k) (vs2 :: [[*]]) (vs :: [[*]]). (Data.HList.Dredge.MapFieldTree ('GHC.Base.Just xs) vs3, Data.HList.Dredge.FieldTree v vs1, Data.HList.Dredge.MapCons (Data.HList.FakePrelude.Label n) ('[] : vs1) vs2, Data.HList.HList.HAppendListR vs2 vs3 ~ vs) => Data.HList.Dredge.MapFieldTree ('GHC.Base.Just (Data.Tagged.Tagged n v : xs)) vs
+ Data.HList.Dredge: instance forall k m1 m (m3 :: m) (m4 :: m1) (n :: k). Data.HList.Dredge.HSingleton m3 m4 '[n] n
+ Data.HList.Dredge: instance forall k r (ns :: [[*]]) (l :: k) (ns' :: [[*]]) (path :: [*]). (Data.HList.Dredge.FieldTree r ns, Data.HList.Dredge.FilterLastEq (Data.HList.FakePrelude.Label l) ns ns ns', Data.HList.Dredge.HSingleton (Data.HList.Dredge.NonUnique' r l) (Data.HList.Dredge.NamesDontMatch r ns l) ns' path) => Data.HList.Dredge.LabelPathEndingWith r l path
+ Data.HList.Dredge: instance forall k r (xs :: [*]) (out2 :: [*]) v (out1 :: [*]) (out :: [*]) (n :: k). (Data.HList.Dredge.MapFieldTreeVal r ('GHC.Base.Just xs) out2, Data.HList.Dredge.FieldTreeVal v out1, (v : Data.HList.HList.HAppendListR out1 out2) ~ out) => Data.HList.Dredge.MapFieldTreeVal r ('GHC.Base.Just (Data.Tagged.Tagged n v : xs)) out
+ Data.HList.Dredge: instance forall k v a b (c :: [*]) (ns :: [k]) (ns' :: [k]). Data.HList.Dredge.FilterVEq v (a : b : c) ns ns' => Data.HList.Dredge.FilterVEq1 v (a : b : c) ns ns'
+ Data.HList.Dredge: instance forall k v v' (b :: GHC.Types.Bool) (n :: k) (ns1 :: [k]) (ns2 :: [k]) (vs :: [*]) (ns :: [k]). (Data.HList.FakePrelude.HEq v v' b, Data.HList.Dredge.ConsTrue b n ns1 ns2, Data.HList.Dredge.FilterVEq v vs ns ns1) => Data.HList.Dredge.FilterVEq v (v' : vs) (n : ns) ns2
+ Data.HList.Dredge: instance forall k v v' (ns :: [k]). v ~ v' => Data.HList.Dredge.FilterVEq1 v '[v'] ns ns
+ Data.HList.Dredge: instance forall k1 (x :: k1) (r :: [*] -> *) (s :: [*]) (t :: [*]) a b j (p :: * -> * -> *) (f :: * -> *) k2 (ty :: Data.HList.Labelable.LabeledOpticType) (xs :: [*]) i. (Data.HList.Labelable.Labelable x r s t a b, j ~ p a (f b), k2 ~ p (r s) (f (r t)), ty ~ Data.HList.Labelable.LabelableTy r, Data.HList.Labelable.LabeledOpticP ty p, Data.HList.Labelable.LabeledOpticF ty f, Data.HList.Labelable.LabeledOpticTo ty x (->), Data.HList.Dredge.LabelablePath xs i j) => Data.HList.Dredge.LabelablePath (Data.HList.FakePrelude.Label x : xs) i k2
+ Data.HList.Dredge: instance forall k1 k2 (msg :: k2) (x :: k1) (xs :: [k1]). Data.HList.Dredge.HGuardNonNull msg (x : xs)
+ Data.HList.Dredge: instance forall k1 k2 (msg :: k2). Data.HList.FakePrelude.Fail msg => Data.HList.Dredge.HGuardNonNull msg '[]
+ Data.HList.Dredge: instance forall m (path :: [*]) y' (rest :: [*]) y (b :: GHC.Types.Bool) (z :: m) (r1 :: [m]) (r :: [m]) (xs :: [[*]]) (zs :: [m]). (Data.HList.HList.HReverse path (y' : rest), Data.HList.FakePrelude.HEq y y' b, Data.HList.Dredge.ConsTrue b z r1 r, Data.HList.Dredge.FilterLastEq y xs zs r1) => Data.HList.Dredge.FilterLastEq y (path : xs) (z : zs) r
+ Data.HList.Dredge: instance forall m k (y :: k). Data.HList.Dredge.FilterLastEq y '[] '[] '[]
+ Data.HList.Dredge: instance forall m k m1 (m3 :: m1) (a :: k) (m4 :: m). (Data.HList.FakePrelude.Fail m3, GHC.Types.Any ~ a) => Data.HList.Dredge.HSingleton m4 m3 '[] a
+ Data.HList.Dredge: instance forall m1 k m (m3 :: m) (a :: k) (m4 :: m1) (n1 :: k) (n2 :: k) (n3 :: [k]). (Data.HList.FakePrelude.Fail m3, GHC.Types.Any ~ a) => Data.HList.Dredge.HSingleton m3 m4 (n1 : n2 : n3) a
+ Data.HList.Dredge: instance x ~ x' => Data.HList.Dredge.LabelablePath '[] x x'
+ Data.HList.Dredge: labelPathEndingWith :: LabelPathEndingWith r l path => proxy r -> Label l -> Label path
+ Data.HList.Dredge: labelPathEndingWithTD :: forall r l v path vs vs1 ns ns1 ns2. (SameLength ns vs, SameLength ns1 vs1, FieldTree r ns, FieldTreeVal r vs, FilterLastEq (Label l) ns ns ns1, FilterLastEq (Label l) ns vs vs1, FilterVEq1 v vs1 ns1 ns2, HGuardNonNull (NamesDontMatch r ns l) ns1, HSingleton (NonUnique r v l) (TypesDontMatch r ns1 vs1 v) ns2 path) => Proxy r -> Label l -> Proxy v -> Label path
+ Data.HList.Dredge: toLabelx :: EnsureLabel x y => x -> y
+ Data.HList.Dredge: type NamesDontMatch r ns l = (ErrShowType r :$$: (ErrText "has paths" :<>: ErrShowType ns)) :$$: (ErrText "but none which end in the desired label" :<>: ErrShowType l)
+ Data.HList.Dredge: type NonUnique r v l = NonUnique' r l :$$: (ErrText "also considering the v type " :<>: ErrShowType v)
+ Data.HList.Dredge: type NonUnique' r l = (ErrText "Path ending in label " :<>: ErrShowType l) :$$: (ErrText "is not unique in " :<>: ErrShowType r)
+ Data.HList.Dredge: type TryCollectionList r v = (v ~ TryCollectionListTF r)
+ Data.HList.Dredge: type TypesDontMatch r ns1 vs1 v = ((ErrShowType r :$$: (ErrText "has potential paths with the right labels" :<>: ErrShowType ns1)) :$$: ((ErrText "which point at types" :<>: ErrShowType vs1) :<>: ErrText "respectively")) :$$: (ErrText "but none of these match the desired type" :<>: ErrShowType v)
+ Data.HList.FakePrelude: instance (TypeError ...) => Data.HList.FakePrelude.Fail x
+ Data.HList.FakePrelude: instance GHC.TypeNats.KnownNat (Data.HList.FakePrelude.HNat2Nat n) => Data.HList.FakePrelude.HNat2Integral n
+ Data.HList.FakePrelude: instance forall a1 a2 (x :: a2) (y :: a1) (xs :: [a2]) (ys :: [a1]). (Data.HList.FakePrelude.SameLabels x y, Data.HList.FakePrelude.SameLabels xs ys) => Data.HList.FakePrelude.SameLabels (x : xs) (y : ys)
+ Data.HList.FakePrelude: instance forall k (t :: k) (t' :: GHC.Types.Symbol). Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label t' => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) t'
+ Data.HList.FakePrelude: instance forall k (t :: k) x tx. Data.Tagged.Tagged t x ~ tx => Data.HList.FakePrelude.ApplyAB Data.HList.FakePrelude.HUntag tx x
+ Data.HList.FakePrelude: instance forall k (xs :: [*]) x (t :: k) v. (Data.HList.FakePrelude.HAllTaggedLV xs, x ~ Data.Tagged.Tagged t v) => Data.HList.FakePrelude.HAllTaggedLV (x : xs)
+ Data.HList.FakePrelude: instance forall k a (x :: a) (xs :: [a]). Data.HList.FakePrelude.SameLabels '[] (x : xs)
+ Data.HList.FakePrelude: instance forall k a (x :: a) (xs :: [a]). Data.HList.FakePrelude.SameLabels (x : xs) '[]
+ Data.HList.FakePrelude: instance forall k m (es2 :: [m]). es2 ~ '[] => Data.HList.FakePrelude.SameLength' '[] es2
+ Data.HList.FakePrelude: instance forall k1 k2 (t :: k2) (t' :: k1) a. Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label t' => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) (Data.Tagged.Tagged t' a)
+ Data.HList.FakePrelude: instance forall k1 k2 (t :: k2) (t' :: k1). Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label t' => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) (Data.HList.FakePrelude.Label t')
+ Data.HList.FakePrelude: instance forall k2 k1 (cxt :: k1) a (getb :: k2) b. (Data.HList.FakePrelude.FunCxt cxt a, Data.HList.FakePrelude.FunApp getb a ~ b) => Data.HList.FakePrelude.ApplyAB (Data.HList.FakePrelude.Fun cxt getb) a b
+ Data.HList.FakePrelude: instance forall k2 k1 (cxt :: k1) b (geta :: k2) a. (Data.HList.FakePrelude.FunCxt cxt b, Data.HList.FakePrelude.FunApp geta b ~ a) => Data.HList.FakePrelude.ApplyAB (Data.HList.FakePrelude.Fun' cxt geta) a b
+ Data.HList.FakePrelude: instance forall m (t :: GHC.Types.Symbol) (s :: m). Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) s => Data.HList.FakePrelude.SameLabels t s
+ Data.HList.FakePrelude: instance forall m k (t :: k) (s :: m) a. Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) s => Data.HList.FakePrelude.SameLabels (Data.Tagged.Tagged t a) s
+ Data.HList.FakePrelude: instance forall m k (x :: [k]) (y :: [m]). (Data.HList.FakePrelude.SameLength' x y, Data.HList.FakePrelude.SameLength' y x) => Data.HList.FakePrelude.SameLength x y
+ Data.HList.FakePrelude: instance forall m k (xs :: [k]) (ys :: [m]) (es2 :: [m]) (y :: m) (x :: k). (Data.HList.FakePrelude.SameLength' xs ys, es2 ~ (y : ys)) => Data.HList.FakePrelude.SameLength' (x : xs) es2
+ Data.HList.FakePrelude: instance hJustA ~ Data.HList.FakePrelude.HJust a => Data.HList.FakePrelude.ApplyAB (Data.HList.FakePrelude.HJust t) a hJustA
+ Data.HList.FakePrelude: instance x ~ y => Data.HList.FakePrelude.HCast1 'GHC.Types.True x y
+ Data.HList.FakePrelude: type ErrShowType x = ShowType x
+ Data.HList.FakePrelude: type ErrText x = Text x
+ Data.HList.FakePrelude: type ExcessFieldFound key collection = (ErrText "found field" :<>: ErrShowType key) :$$: (ErrText "when it should be absent from" :<>: ErrShowType collection)
+ Data.HList.FakePrelude: type ExtraField x = ErrText "extra field" :<>: ErrShowType x
+ Data.HList.FakePrelude: type FieldNotFound key collection = (ErrText "key" :<>: ErrShowType key) :$$: (ErrText "could not be found in" :<>: ErrShowType collection)
+ Data.HList.FakePrelude: type HNatIndexTooLarge (nat :: HNat) (r :: [k] -> *) (xs :: [k]) = ((ErrText "0-based index" :<>: ErrShowType (HNat2Nat nat)) :<>: ErrText "is too large for collection") :$$: ErrShowType (r xs)
+ Data.HList.FakePrelude: type family ApplyR f a :: *;
+ Data.HList.FakePrelude: }
+ Data.HList.HArray: class HUpdateAtHNat' (n :: HNat) e (l :: [*]) (l0 :: [*]) where {
+ Data.HList.HArray: hUpdateAtHNat' :: HUpdateAtHNat' n e l l0 => Proxy l0 -> Proxy n -> e -> HList l -> HList (HUpdateAtHNatR n e l)
+ Data.HList.HArray: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.HNatIndexTooLarge n Data.HList.HList.HList l0) => Data.HList.HArray.HUpdateAtHNat' n e1 '[] l0
+ Data.HList.HArray: instance Data.HList.HArray.HUpdateAtHNat' 'Data.HList.FakePrelude.HZero e1 (e : l) l0
+ Data.HList.HArray: instance Data.HList.HArray.HUpdateAtHNat' n e l l => Data.HList.HArray.HUpdateAtHNat n e l
+ Data.HList.HArray: instance Data.HList.HArray.HUpdateAtHNat' n e1 l l0 => Data.HList.HArray.HUpdateAtHNat' ('Data.HList.FakePrelude.HSucc n) e1 (e : l) l0
+ Data.HList.HArray: type family HUpdateAtHNatR (n :: HNat) e (l :: [*]) :: [*];
+ Data.HList.HArray: }
+ Data.HList.HList: UncurrySappend :: UncurrySappend
+ Data.HList.HList: class HDrop (n :: HNat) xs ys | n xs -> ys
+ Data.HList.HList: class HLengthGe (xs :: [*]) (n :: HNat)
+ Data.HList.HList: class HTake (n :: HNat) xs ys | n xs -> ys
+ Data.HList.HList: data UncurrySappend
+ Data.HList.HList: hDrop :: (HDrop n xs ys, HLengthGe xs n) => Proxy n -> HList xs -> HList ys
+ Data.HList.HList: hTake :: (HTake n xs ys, HLengthEq ys n, HLengthGe xs n) => Proxy n -> HList xs -> HList ys
+ Data.HList.HList: instance (Data.HList.HList.HLengthEq ys n, Data.HList.HList.HLengthGe xs n, Data.HList.HList.HTake n xs ys) => Data.HList.HList.HTake ('Data.HList.FakePrelude.HSucc n) (x : xs) (x : ys)
+ Data.HList.HList: instance (Data.HList.HList.HLengthGe xs n, Data.HList.HList.HDrop n xs ys) => Data.HList.HList.HDrop ('Data.HList.FakePrelude.HSucc n) (x : xs) ys
+ Data.HList.HList: instance (Data.HList.HList.HLengthGe xs n, xxs ~ (x : xs)) => Data.HList.HList.HLengthGe xxs ('Data.HList.FakePrelude.HSucc n)
+ Data.HList.HList: instance (Data.HList.HListPrelude.HZip Data.HList.HList.HList a a aa, Data.HList.HList.HMapCxt Data.HList.HList.HList Data.HList.HList.UncurryMappend aa a) => Data.Semigroup.Semigroup (Data.HList.HList.HList a)
+ Data.HList.HList: instance (aa ~ (a, a), Data.Semigroup.Semigroup a) => Data.HList.FakePrelude.ApplyAB Data.HList.HList.UncurrySappend aa a
+ Data.HList.HList: instance Data.HList.HList.HDrop 'Data.HList.FakePrelude.HZero xs xs
+ Data.HList.HList: instance Data.HList.HList.HLengthGe xxs 'Data.HList.FakePrelude.HZero
+ Data.HList.HList: instance Data.HList.HList.HTake 'Data.HList.FakePrelude.HZero xs '[]
+ Data.HList.HList: instance e' ~ e => Data.HList.FakePrelude.ApplyAB Data.HList.HList.HRmTag (e, t) e'
+ Data.HList.HList: instance et ~ (e, t) => Data.HList.FakePrelude.ApplyAB (Data.HList.HList.HAddTag t) e et
+ Data.HList.HList: instance forall a (e1 :: a) (e :: a) (b :: GHC.Types.Bool) (l :: [a]) (br :: GHC.Types.Bool). (Data.HList.FakePrelude.HEq e1 e b, Data.HList.HList.HMember' b e1 l br) => Data.HList.HList.HMember e1 (e : l) br
+ Data.HList.HList: instance forall a (e1 :: a) (e :: a) (b :: GHC.Types.Bool) (l :: [a]) (res :: GHC.Base.Maybe [a]). (Data.HList.FakePrelude.HEq e1 e b, Data.HList.HList.HMemberM1 b e1 (e : l) res) => Data.HList.HList.HMemberM e1 (e : l) res
+ Data.HList.HList: instance forall a (e1 :: a) (e2 :: a) (b :: GHC.Types.Bool) (l :: [a]) (l0 :: [a]) (n :: Data.HList.FakePrelude.HNat). (Data.HList.FakePrelude.HEq e1 e2 b, Data.HList.HList.HFind2 b e1 l l0 n) => Data.HList.HList.HFind1 e1 (e2 : l) l0 n
+ Data.HList.HList: instance forall a (e1 :: a) (l :: [a]) (r :: GHC.Base.Maybe [a]) (e :: a) (res :: GHC.Base.Maybe [a]). (Data.HList.HList.HMemberM e1 l r, Data.HList.HList.HMemberM2 r e1 (e : l) res) => Data.HList.HList.HMemberM1 'GHC.Types.False e1 (e : l) res
+ Data.HList.HList: instance forall a (l1 :: [a]) (e1 :: a) (e :: a) (l :: [a]). Data.HList.HList.HMemberM2 ('GHC.Base.Just l1) e1 (e : l) ('GHC.Base.Just (e : l1))
+ Data.HList.HList: instance forall a (xs :: [a]) (ys :: [a]) (zs :: [a]) (x :: a). Data.HList.HList.HAppendList1 xs ys zs => Data.HList.HList.HAppendList1 (x : xs) ys (x : zs)
+ Data.HList.HList: instance forall k (e :: k) (l :: [k]) (l0 :: [k]) (n :: Data.HList.FakePrelude.HNat). Data.HList.HList.HFind1 e l l0 n => Data.HList.HList.HFind2 'GHC.Types.False e l l0 ('Data.HList.FakePrelude.HSucc n)
+ Data.HList.HList: instance forall k (e :: k) (l :: [k]) (l0 :: [k]). Data.HList.HList.HFind2 'GHC.Types.True e l l0 'Data.HList.FakePrelude.HZero
+ Data.HList.HList: instance forall k (e :: k) (l :: [k]) (n :: Data.HList.FakePrelude.HNat). Data.HList.HList.HFind1 e l l n => Data.HList.HList.HFind e l n
+ Data.HList.HList: instance forall k (e :: k). Data.HList.HList.HTMember e '[] 'GHC.Types.False
+ Data.HList.HList: instance forall k (e1 :: k) (e :: k) (l :: [k]). Data.HList.HList.HMemberM1 'GHC.Types.True e1 (e : l) ('GHC.Base.Just l)
+ Data.HList.HList: instance forall k (e1 :: k) (l :: [k]) (br :: GHC.Types.Bool). Data.HList.HList.HMember e1 l br => Data.HList.HList.HMember' 'GHC.Types.False e1 l br
+ Data.HList.HList: instance forall k (e1 :: k) (l :: [k]). Data.HList.HList.HMember' 'GHC.Types.True e1 l 'GHC.Types.True
+ Data.HList.HList: instance forall k (e1 :: k) (l :: [k]). Data.HList.HList.HMemberM2 'GHC.Base.Nothing e1 l 'GHC.Base.Nothing
+ Data.HList.HList: instance forall k (e1 :: k) (l0 :: [k]). Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound e1 l0) => Data.HList.HList.HFind1 e1 '[] l0 'Data.HList.FakePrelude.HZero
+ Data.HList.HList: instance forall k (e1 :: k). Data.HList.HList.HMember e1 '[] 'GHC.Types.False
+ Data.HList.HList: instance forall k (e1 :: k). Data.HList.HList.HMemberM e1 '[] 'GHC.Base.Nothing
+ Data.HList.HList: instance forall k (f :: k) x1 x (b :: GHC.Types.Bool) (xs :: [*]) (xi :: [*]) (xo :: [*]). (Data.HList.FakePrelude.HEqBy f x1 x b, Data.HList.HList.HPartitionEq1 b f x1 x xs xi xo) => Data.HList.HList.HPartitionEq f x1 (x : xs) xi xo
+ Data.HList.HList: instance forall k (ys :: [k]). Data.HList.HList.HAppendList1 '[] ys ys
+ Data.HList.HList: instance forall k a (x' :: a) (x :: a) (xs :: [a]) (xsys :: [a]) (ys :: k). (x' ~ x, Data.HList.HList.HStripPrefix xs xsys ys) => Data.HList.HList.HStripPrefix (x' : xs) (x : xsys) ys
+ Data.HList.HList: instance forall k1 k2 (f :: k2) (x1 :: k1) (xs :: [*]) (xi :: [*]) (xo :: [*]) x. Data.HList.HList.HPartitionEq f x1 xs xi xo => Data.HList.HList.HPartitionEq1 'GHC.Types.False f x1 x xs xi (x : xo)
+ Data.HList.HList: instance forall k1 k2 (f :: k2) (x1 :: k1) (xs :: [*]) (xi :: [*]) (xo :: [*]) x. Data.HList.HList.HPartitionEq f x1 xs xi xo => Data.HList.HList.HPartitionEq1 'GHC.Types.True f x1 x xs (x : xi) xo
+ Data.HList.HList: instance forall k1 k2 (f :: k2) (x1 :: k1). Data.HList.HList.HPartitionEq f x1 '[] '[] '[]
+ Data.HList.HList: instance forall k1 k2 (ys :: k2). Data.HList.HList.HStripPrefix '[] ys ys
+ Data.HList.HList: instance forall t (f :: t) a (as :: [*]) (fst :: [*]) (snd :: [*]) (gs :: [*]). (Data.HList.HList.HSpanEqBy f a as fst snd, Data.HList.HList.HGroupBy f snd gs) => Data.HList.HList.HGroupBy f (a : as) (Data.HList.HList.HList (a : fst) : gs)
+ Data.HList.HList: instance forall t (f :: t) x (y :: [*]) (fst :: [*]) (snd :: [*]). (Data.HList.HList.HSpanEqBy1 f x y fst snd, Data.HList.HList.HAppendListR fst snd ~ y) => Data.HList.HList.HSpanEqBy f x y fst snd
+ Data.HList.HList: instance forall t (f :: t) x (zs :: [*]) (i :: [*]) (o :: [*]) y. Data.HList.HList.HSpanEqBy1 f x zs i o => Data.HList.HList.HSpanEqBy2 'GHC.Types.True f x y zs (y : i) o
+ Data.HList.HList: instance forall t (f :: t) x y (b :: GHC.Types.Bool) (ys :: [*]) (i :: [*]) (o :: [*]). (Data.HList.FakePrelude.HEqBy f x y b, Data.HList.HList.HSpanEqBy2 b f x y ys i o) => Data.HList.HList.HSpanEqBy1 f x (y : ys) i o
+ Data.HList.HList: instance forall t (f :: t) x y (ys :: [*]). Data.HList.HList.HSpanEqBy2 'GHC.Types.False f x y ys '[] (y : ys)
+ Data.HList.HList: instance forall t (f :: t) x. Data.HList.HList.HSpanEqBy1 f x '[] '[] '[]
+ Data.HList.HList: instance forall t (f :: t). Data.HList.HList.HGroupBy f '[] '[]
+ Data.HList.HList: instance hJustA ~ Data.HList.FakePrelude.HJust a => Data.HList.FakePrelude.ApplyAB Data.HList.HList.HFromJust hJustA a
+ Data.HList.HList: instance lz ~ '[z] => Data.HList.HList.HScanr f z '[] lz
+ Data.HList.HList: instance v ~ v' => Data.HList.HList.HFoldr f v '[] v'
+ Data.HList.HList: instance v ~ v' => Data.HList.HList.HFoldr1 f '[v] v'
+ Data.HList.HList: instance xxs ~ '[] => Data.HList.HList.HLengthEq1 xxs 'Data.HList.FakePrelude.HZero
+ Data.HList.HList: instance z ~ z' => Data.HList.HList.HFoldl f z '[] z'
+ Data.HList.HList: instance zero ~ 'Data.HList.FakePrelude.HZero => Data.HList.HList.HLengthEq2 '[] zero
+ Data.HList.HList: type family HSplitF l :: [*];
+ Data.HList.HList: }
+ Data.HList.HListPrelude: instance Data.HList.HListPrelude.HUnzip Data.Proxy.Proxy '[] '[] '[]
+ Data.HList.HListPrelude: instance Data.HList.HListPrelude.HUnzip Data.Proxy.Proxy ls vs lvs => Data.HList.HListPrelude.HZip Data.Proxy.Proxy ls vs lvs
+ Data.HList.HListPrelude: instance forall k (x :: k). Data.HList.HListPrelude.HExtend (Data.HList.FakePrelude.Label x) (Data.Proxy.Proxy '[])
+ Data.HList.HListPrelude: instance forall k lv (l :: k) v (ls :: [*]) (vs :: [*]) (lvs :: [*]). (lv ~ Data.Tagged.Tagged l v, Data.HList.HListPrelude.HUnzip Data.Proxy.Proxy ls vs lvs) => Data.HList.HListPrelude.HUnzip Data.Proxy.Proxy (Data.HList.FakePrelude.Label l : ls) (v : vs) (lv : lvs)
+ Data.HList.HListPrelude: type family HExtendR e l;
+ Data.HList.HListPrelude: }
+ Data.HList.HOccurs: class HOccursNot1 (e :: k) (xs :: [k]) (xs0 :: [k])
+ Data.HList.HOccurs: class HOccursNot2 (b :: Bool) e (l :: [k]) (l0 :: [k])
+ Data.HList.HOccurs: instance (Data.HList.HOccurs.HOccurrence e (x : y) l', Data.HList.HOccurs.HOccurs' e l' (x : y)) => Data.HList.HListPrelude.HOccurs e (Data.HList.HList.HList (x : y))
+ Data.HList.HOccurs: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound e (Data.HList.HList.HList l0)) => Data.HList.HOccurs.HOccurs' e '[] l0
+ Data.HList.HOccurs: instance Data.HList.HListPrelude.HOccursNot e l => Data.HList.HOccurs.HOccurs' e (e : l) l0
+ Data.HList.HOccurs: instance e ~ e1 => Data.HList.HOccurs.HOccursOpt' e (e1 : l)
+ Data.HList.HOccurs: instance forall a (e :: a) (e1 :: a) (b :: GHC.Types.Bool) (l :: [a]) (l0 :: [a]). (Data.HList.FakePrelude.HEq e e1 b, Data.HList.HOccurs.HOccursNot2 b e l l0) => Data.HList.HOccurs.HOccursNot1 e (e1 : l) l0
+ Data.HList.HOccurs: instance forall k (e :: k) (l :: [k]) (l0 :: [k]). Data.HList.HOccurs.HOccursNot1 e l l0 => Data.HList.HOccurs.HOccursNot2 'GHC.Types.False e l l0
+ Data.HList.HOccurs: instance forall k (e :: k) (l0 :: [k]). Data.HList.HOccurs.HOccursNot1 e '[] l0
+ Data.HList.HOccurs: instance forall k (e :: k) (xs :: [k]). Data.HList.HOccurs.HOccursNot1 e xs xs => Data.HList.HListPrelude.HOccursNot e xs
+ Data.HList.HOccurs: instance forall k1 k2 (e :: k2) (l0 :: [k1]) (l :: [k1]). Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.ExcessFieldFound e l0) => Data.HList.HOccurs.HOccursNot2 'GHC.Types.True e l l0
+ Data.HList.HSort: instance (x GHC.TypeNats.<=? y) ~ b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b
+ Data.HList.HSort: instance Data.HList.FakePrelude.HLe x y ~ b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b
+ Data.HList.HSort: instance forall k (a :: [*]) (b :: [*]) (le :: k) (ok :: GHC.Types.Bool). (Data.HList.FakePrelude.SameLength a b, Data.HList.HSort.HIsAscList le a ok, Data.HList.HSort.HSortBy1 ok le a b, Data.HList.FakePrelude.HEqByFn le) => Data.HList.HSort.HSortBy le a b
+ Data.HList.HSort: instance forall k (a :: k). Data.HList.FakePrelude.HEqByFn a => Data.HList.FakePrelude.HEqByFn (Data.HList.HSort.HDown a)
+ Data.HList.HSort: instance forall k (a :: k). Data.HList.FakePrelude.HEqByFn a => Data.HList.FakePrelude.HEqByFn (Data.HList.HSort.HNeq a)
+ Data.HList.HSort: instance forall k (b :: GHC.Types.Bool) x y (ab :: [*]) (le :: k). (Data.HList.HSort.HSort2 b x y ab, Data.HList.FakePrelude.HEqBy le x y b) => Data.HList.HSort.HMSortBy le '[x, y] ab
+ Data.HList.HSort: instance forall k (le :: k) (a :: [*]) (b :: [*]). Data.HList.HSort.HQSortBy le a b => Data.HList.HSort.HSortBy1 'GHC.Types.False le a b
+ Data.HList.HSort: instance forall k (le :: k) (a :: [*]). Data.HList.HSort.HSortBy1 'GHC.Types.True le a a
+ Data.HList.HSort: instance forall k (le :: k) (b :: GHC.Types.Bool) y (ys :: [*]) (ps0 :: [*]) x. (Data.HList.HSort.HAscList1 le b (y : ys) ps0, Data.HList.FakePrelude.HEqBy le x y b) => Data.HList.HSort.HAscList0 le (x : y : ys) ps0
+ Data.HList.HSort: instance forall k (le :: k) (ps :: [*]). (Data.HList.FakePrelude.HEqByFn le, Data.HList.HSort.HAscList0 le ps ps) => Data.HList.HSort.HAscList le ps
+ Data.HList.HSort: instance forall k (le :: k) (ps0 :: [*]). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HAscList0 le '[] ps0
+ Data.HList.HSort: instance forall k (le :: k) (xs' :: [*]) (ys' :: [*]) (sorted :: [*]) (ys :: [*]) (xs :: [*]) a b c (cs :: [*]) (n2 :: Data.HList.FakePrelude.HNat) (n :: Data.HList.FakePrelude.HNat). (Data.HList.HSort.HMerge le xs' ys' sorted, Data.HList.HSort.HMSortBy le ys ys', Data.HList.HSort.HMSortBy le xs xs', Data.HList.HList.HLengthEq (a : b : c : cs) n2, Data.HList.FakePrelude.HDiv2 n2 ~ n, Data.HList.HList.HSplitAt n (a : b : c : cs) xs ys) => Data.HList.HSort.HMSortBy le (a : b : c : cs) sorted
+ Data.HList.HSort: instance forall k (le :: k) (ys :: [*]) (ys0 :: [*]). Data.HList.HSort.HAscList0 le ys ys0 => Data.HList.HSort.HAscList1 le 'GHC.Types.True ys ys0
+ Data.HList.HSort: instance forall k (le :: k) a b (bs :: [*]) (bGeq :: [*]) (bLt :: [*]) (sortedLt :: [*]) (sortedGeq :: [*]) (sorted :: [*]). (Data.HList.HList.HPartitionEq le a (b : bs) bGeq bLt, Data.HList.HSort.HQSortBy le bLt sortedLt, Data.HList.HSort.HQSortBy le bGeq sortedGeq, Data.HList.HList.HAppendListR sortedLt (a : sortedGeq) ~ sorted, Data.HList.HList.HAppendList sortedLt (a : sortedGeq)) => Data.HList.HSort.HQSortBy le (a : b : bs) sorted
+ Data.HList.HSort: instance forall k (le :: k) x (ps0 :: [*]). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HAscList0 le '[x] ps0
+ Data.HList.HSort: instance forall k (le :: k) x (xs :: [*]). Data.HList.HSort.HMerge le '[] (x : xs) (x : xs)
+ Data.HList.HSort: instance forall k (le :: k) x (xs :: [*]). Data.HList.HSort.HMerge le (x : xs) '[] (x : xs)
+ Data.HList.HSort: instance forall k (le :: k) x y (b :: GHC.Types.Bool) (xs :: [*]) (ys :: [*]) l (ls :: [*]) (hhs :: [*]) (srt :: [*]). (Data.HList.FakePrelude.HEqBy le x y b, Data.HList.HSort.HMerge1 b (x : xs) (y : ys) (l : ls) hhs, Data.HList.HSort.HMerge le ls hhs srt) => Data.HList.HSort.HMerge le (x : xs) (y : ys) (l : srt)
+ Data.HList.HSort: instance forall k (le :: k) x y (b1 :: GHC.Types.Bool) (ys :: [*]) (b2 :: GHC.Types.Bool) (b3 :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqBy le x y b1, Data.HList.HSort.HIsAscList le (y : ys) b2, Data.HList.FakePrelude.HAnd b1 b2 ~ b3) => Data.HList.HSort.HIsAscList le (x : y : ys) b3
+ Data.HList.HSort: instance forall k (le :: k) x. Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HIsAscList le '[x] 'GHC.Types.True
+ Data.HList.HSort: instance forall k (le :: k) x. Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HMSortBy le '[x] '[x]
+ Data.HList.HSort: instance forall k (le :: k) x. Data.HList.HSort.HQSortBy le '[x] '[x]
+ Data.HList.HSort: instance forall k (le :: k). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HIsAscList le '[] 'GHC.Types.True
+ Data.HList.HSort: instance forall k (le :: k). Data.HList.FakePrelude.HEqByFn le => Data.HList.HSort.HMSortBy le '[] '[]
+ Data.HList.HSort: instance forall k (le :: k). Data.HList.HSort.HMerge le '[] '[] '[]
+ Data.HList.HSort: instance forall k (le :: k). Data.HList.HSort.HQSortBy le '[] '[]
+ Data.HList.HSort: instance forall k (lt :: k) (ps :: [*]) (ps' :: [*]) (b :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqByFn lt, Data.HList.HSort.HSortBy lt ps ps', Data.HList.HSort.HIsAscList lt ps' b) => Data.HList.HSort.HIsSetBy lt ps b
+ Data.HList.HSort: instance forall k (lt :: k) (ps :: [*]) (ps' :: [*]). (Data.HList.FakePrelude.HEqByFn lt, Data.HList.HSort.HSortBy lt ps ps', Data.HList.HSort.HAscList lt ps') => Data.HList.HSort.HSetBy lt ps
+ Data.HList.HSort: instance forall k (x :: k) (y :: k) (b :: GHC.Types.Bool) v w. Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn (Data.Tagged.Tagged x v) (Data.Tagged.Tagged y w) b
+ Data.HList.HSort: instance forall k (x :: k) (y :: k) (b :: GHC.Types.Bool). Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn (Data.HList.FakePrelude.Label x) (Data.HList.FakePrelude.Label y) b
+ Data.HList.HSort: instance forall k (x :: k) (y :: k) (b :: GHC.Types.Bool). Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn x y b => Data.HList.FakePrelude.HEqBy Data.HList.HSort.HLeFn (Data.Proxy.Proxy x) (Data.Proxy.Proxy y) b
+ Data.HList.HSort: instance forall k y (le :: k) (ys0 :: [*]) (ys :: [*]). (Data.HList.FakePrelude.Fail '("Duplicated element", y, "using le", le, "in", ys0), Data.HList.FakePrelude.HEqByFn le) => Data.HList.HSort.HAscList1 le 'GHC.Types.False (y : ys) ys0
+ Data.HList.HSort: instance forall k1 k2 (f :: k2) (y :: k1) (x :: k1) (b :: GHC.Types.Bool). Data.HList.FakePrelude.HEqBy f y x b => Data.HList.FakePrelude.HEqBy (Data.HList.HSort.HDown f) x y b
+ Data.HList.HSort: instance forall k1 k2 (le :: k2) (y :: k1) (x :: k1) (b1 :: GHC.Types.Bool) (b2 :: GHC.Types.Bool). (Data.HList.FakePrelude.HEqBy le y x b1, Data.HList.FakePrelude.HNot b1 ~ b2) => Data.HList.FakePrelude.HEqBy (Data.HList.HSort.HNeq le) x y b2
+ Data.HList.HTypeIndexed: instance forall k (e :: k). Data.HList.HListPrelude.HDeleteMany e (Data.HList.HList.HList '[]) (Data.HList.HList.HList '[])
+ Data.HList.HTypeIndexed: instance forall k (e1 :: k) (l :: [*]) (l1 :: [*]) e. Data.HList.HListPrelude.HDeleteMany e1 (Data.HList.HList.HList l) (Data.HList.HList.HList l1) => Data.HList.HTypeIndexed.HDeleteManyCase 'GHC.Types.False e1 e l (e : l1)
+ Data.HList.HZip: type family MapSnd z :: [*];
+ Data.HList.HZip: }
+ Data.HList.Keyword: instance forall a (tail' :: [a]) (tail :: [a]) (e :: a). tail' ~ tail => Data.HList.Keyword.HDelete' 'GHC.Types.True e (e : tail) tail'
+ Data.HList.Keyword: instance forall a k (e :: k) (tail :: [a]) (tail' :: [a]) (e'tail :: [a]) (e' :: a). (Data.HList.Keyword.HDelete e tail tail', e'tail ~ (e' : tail')) => Data.HList.Keyword.HDelete' 'GHC.Types.False e (e' : tail) e'tail
+ Data.HList.Keyword: instance forall k (arg_needed :: k) (arg_values :: [*]) (arg_def :: [*]) f r. Data.HList.Keyword.KWMerge arg_needed arg_values arg_def f r => Data.HList.Keyword.KW' 'GHC.Types.False f (Data.HList.Keyword.Arg arg_needed arg_values) arg_def r
+ Data.HList.Keyword: instance forall k (atail :: k) kw v (arg_values :: [*]) (arg_def :: [*]) f r (tail :: [*]). Data.HList.Keyword.KWMerge atail (kw : v : arg_values) arg_def f r => Data.HList.Keyword.KWMerge'' 'GHC.Types.True kw (kw : v : tail) atail arg_values arg_def f r
+ Data.HList.Keyword: instance forall k (e :: k) (e' :: k) (flag :: GHC.Types.Bool) (tail :: [k]) (l' :: [k]). (Data.HList.FakePrelude.HEq e e' flag, Data.HList.Keyword.HDelete' flag e (e' : tail) l') => Data.HList.Keyword.HDelete e (e' : tail) l'
+ Data.HList.Keyword: instance forall k (vals :: [*]) (tys :: k). GHC.Show.Show (Data.HList.HList.HList vals) => GHC.Show.Show (Data.HList.Keyword.Arg tys vals)
+ Data.HList.Keyword: instance forall k kw (arg_types :: [k]) (arg_types' :: [k]) f a (arg_values :: [*]) (arg_def :: [*]) r. (Data.HList.Keyword.HDelete kw arg_types arg_types', Data.HList.Keyword.KW f (Data.HList.Keyword.Arg arg_types' (kw : a : arg_values)) arg_def r) => Data.HList.Keyword.KWAcc (Data.HList.Keyword.Arg arg_types arg_values) kw a f arg_def r
+ Data.HList.Keyword: instance forall k kw (tail :: [*]) (atail :: k) (arg_values :: [*]) (arg_def :: [*]) f r kw' v'. Data.HList.Keyword.KWMerge' kw tail atail arg_values arg_def f r => Data.HList.Keyword.KWMerge'' 'GHC.Types.False kw (kw' : v' : tail) atail arg_values arg_def f r
+ Data.HList.Keyword: instance forall k kw kw' (flag :: GHC.Types.Bool) (etc :: [*]) (atail :: k) (arg_values :: [*]) (arg_def :: [*]) f r. (Data.HList.FakePrelude.HEq kw kw' flag, Data.HList.Keyword.KWMerge'' flag kw (kw' : etc) atail arg_values arg_def f r) => Data.HList.Keyword.KWMerge' kw (kw' : etc) atail arg_values arg_def f r
+ Data.HList.Keyword: instance forall k kw nff (atail :: k) (arg_values :: [*]) (arg_def :: [*]) f. (Data.HList.FakePrelude.Fail (Data.HList.Keyword.ErrReqdArgNotFound kw), nff ~ Data.HList.Keyword.ErrReqdArgNotFound kw) => Data.HList.Keyword.KWMerge' kw '[] atail arg_values arg_def f nff
+ Data.HList.Keyword: instance forall k r c b (s :: k). r ~ (c -> b) => Data.HList.TypeEqO.IsKeyFN (Data.HList.Keyword.K s c -> r) 'GHC.Types.True
+ Data.HList.Keyword: instance forall k x (l :: k) v y. (x ~ Data.Tagged.Tagged l v, y ~ Data.HList.HList.HList '[Data.HList.FakePrelude.Label l, v]) => Data.HList.FakePrelude.ApplyAB Data.HList.Keyword.TaggedToKW x y
+ Data.HList.Keyword: instance forall k1 k2 (e :: k2) (r :: [k1]). (Data.HList.FakePrelude.Fail (Data.HList.Keyword.ErrUnexpectedKW e), r ~ '[]) => Data.HList.Keyword.HDelete e '[] r
+ Data.HList.Keyword: instance forall k1 k2 (nil :: [k2]) (f :: k1). '[] ~ nil => Data.HList.Keyword.ReflectFK' 'GHC.Types.False f nil
+ Data.HList.Keyword: instance r ~ r' => Data.HList.Keyword.KWApply r '[] r'
+ Data.HList.Label3: instance forall k (t :: k) (ix :: Data.HList.FakePrelude.HNat) ns n. Data.HList.FakePrelude.Label t ~ Data.HList.FakePrelude.Label (Data.HList.Label3.Lbl ix ns n) => Data.HList.FakePrelude.SameLabels (Data.HList.FakePrelude.Label t) (Data.HList.Label3.Lbl ix ns n)
+ Data.HList.Label6: instance GHC.TypeNats.KnownNat x => Data.HList.FakePrelude.ShowLabel x
+ Data.HList.Labelable: class EnsureLabel x y | x -> y
+ Data.HList.Labelable: infixr 4 .==.
+ Data.HList.Labelable: instance forall k (label :: GHC.Types.Symbol -> k) (x :: GHC.Types.Symbol). Data.HList.Labelable.ToSym (label x) x
+ Data.HList.Labelable: instance forall k (s :: [*]) (t :: [*]) a b (x :: k). (Data.HList.TIC.TICPrism s t a b, Data.HList.FakePrelude.Label x ~ Data.HList.FakePrelude.Label a, a ~ b, s ~ t, Data.HList.FakePrelude.SameLength s t) => Data.HList.Labelable.Labelable x Data.HList.TIC.TIC s t a b
+ Data.HList.Labelable: instance forall k (s :: [*]) (t :: [*]) a b (x :: k). Data.HList.Labelable.LabeledCxt1 s t a b => Data.HList.Labelable.Labelable x Data.HList.Labelable.LabeledR s t a b
+ Data.HList.Labelable: instance forall k (x :: k) (s :: [*]) (t :: [*]) a b (to :: * -> * -> *). (Data.HList.Variant.HPrism x s t a b, to ~ (->)) => Data.HList.Labelable.Labelable x Data.HList.Variant.Variant s t a b
+ Data.HList.Labelable: instance forall k (x :: k) (s :: [*]) (t :: [*]) a b. Data.HList.Labelable.LabelableTIPCxt x s t a b => Data.HList.Labelable.Labelable x Data.HList.TIP.TIP s t a b
+ Data.HList.Labelable: instance forall k (x :: k) (s :: [*]) (t :: [*]) a b. Data.HList.Record.HLens x Data.HList.Record.Record s t a b => Data.HList.Labelable.Labelable x Data.HList.Record.Record s t a b
+ Data.HList.Labelable: instance forall k (x :: k) a b. GHC.Show.Show (Data.HList.Labelable.LabeledTo x a b)
+ Data.HList.Labelable: instance forall k (x :: k). Data.HList.Labelable.EnsureLabel (Data.HList.FakePrelude.Label x) (Data.HList.FakePrelude.Label x)
+ Data.HList.Labelable: instance forall k (x :: k). Data.HList.Labelable.EnsureLabel (Data.Proxy.Proxy x) (Data.HList.FakePrelude.Label x)
+ Data.HList.Labelable: instance forall k1 k2 (a :: k1 -> k2 -> *) (b :: k1) (c :: k2) (x :: GHC.Types.Symbol). Data.HList.Labelable.ToSym (a b c) x => Data.HList.Labelable.EnsureLabel (a b c) (Data.HList.FakePrelude.Label x)
+ Data.HList.Labelable: instance forall k1 k2 k3 (x :: GHC.Types.Symbol) a (p :: * -> k3 -> *) (f :: * -> k3) b (s :: [*]) (t :: [*]) (v1 :: k1 -> k2 -> *) (v2 :: k1) (v3 :: k2). Data.HList.Labelable.LabeledTo x (p a (f b)) (p (Data.HList.Labelable.LabeledR s) (f (Data.HList.Labelable.LabeledR t))) ~ v1 v2 v3 => Data.HList.Labelable.ToSym (v1 v2 v3) x
+ Data.HList.Labelable: toLabelSym :: EnsureLabel x1 Label Symbol x2 => x1 -> Label Symbol x2
+ Data.HList.Labelable: type family LabelableTy r :: LabeledOpticType;
+ Data.HList.Labelable: }
+ Data.HList.Record: infixl 1 .<++.
+ Data.HList.Record: infixl 2 .-.
+ Data.HList.Record: infixr 2 .<.
+ Data.HList.Record: infixr 4 .=.
+ Data.HList.Record: infixr 9 .!.
+ Data.HList.Record: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound l ()) => Data.HList.Record.HRearrange4 l ls '[] rout '[]
+ Data.HList.Record: instance Data.Semigroup.Semigroup (Data.HList.HList.HList r) => Data.Semigroup.Semigroup (Data.HList.Record.Record r)
+ Data.HList.Record: instance forall a (l1 :: a) (l2 :: a) (leq :: GHC.Types.Bool) (r :: [a]). (Data.HList.FakePrelude.HEqK l1 l2 leq, Data.HList.Record.HLabelSet' l1 l2 leq r) => Data.HList.Record.HLabelSet (l1 : l2 : r)
+ Data.HList.Record: instance forall k (as :: [*]) (bs :: [*]) (abss :: [*]) (x :: k) a b. Data.HList.Record.HZipRecord as bs abss => Data.HList.Record.HZipRecord (Data.Tagged.Tagged x a : as) (Data.Tagged.Tagged x b : bs) (Data.Tagged.Tagged x (a, b) : abss)
+ Data.HList.Record: instance forall k (l :: [*]) (lRev :: [*]) (l1 :: k) (l' :: k). (Data.HList.HList.HRevAppR l '[] ~ lRev, Data.HList.Record.HExtendRs lRev (Data.Proxy.Proxy '[]) ~ Data.Proxy.Proxy l1, l' ~ l1) => Data.HList.HList.HBuild' l (Data.Proxy.Proxy l')
+ Data.HList.Record: instance forall k (l :: k) (ks :: [*]) (b :: GHC.Types.Bool) (r2 :: [*]) v (r3 :: [*]) (r1 :: [*]). (Data.HList.HList.HMember (Data.HList.FakePrelude.Label l) ks b, Data.HList.FakePrelude.HCond b (Data.HList.Record.Record r2) (Data.HList.Record.Record (Data.Tagged.Tagged l v : r2)) (Data.HList.Record.Record r3), Data.HList.Record.HDeleteLabels ks r1 r2) => Data.HList.Record.HDeleteLabels ks (Data.Tagged.Tagged l v : r1) r3
+ Data.HList.Record: instance forall k (l :: k) (r :: [*]) v fld. Data.HList.Record.HasField l (Data.HList.Record.Record r) v => Data.HList.Record.HasField' 'GHC.Types.False l (fld : r) v
+ Data.HList.Record: instance forall k (l :: k) (r1 :: [*]) (b :: GHC.Types.Bool) v (r2' :: [*]) (ru :: [*]). (Data.HList.Record.HMemberLabel l r1 b, Data.HList.Record.UnionSymRec' b r1 (Data.Tagged.Tagged l v) r2' ru) => Data.HList.Record.UnionSymRec r1 (Data.Tagged.Tagged l v : r2') ru
+ Data.HList.Record: instance forall k (l :: k) (v :: [*]) (t1 :: [*]) (v' :: [*]). Data.HList.Record.H2ProjectByLabels '[Data.HList.FakePrelude.Label l] v t1 v' => Data.HList.HListPrelude.HDeleteAtLabel Data.HList.Record.Record l v v'
+ Data.HList.Record: instance forall k (l :: k) (xs :: [*]) (b :: GHC.Base.Maybe [*]) (r :: [*] -> *) (v :: GHC.Base.Maybe *). (Data.HList.HList.HMemberM (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf xs) b, Data.HList.Record.HasFieldM1 b l (r xs) v) => Data.HList.Record.HasFieldM l (r xs) v
+ Data.HList.Record: instance forall k (l :: k) r v (b :: [*]). Data.HList.Record.HasField l r v => Data.HList.Record.HasFieldM1 ('GHC.Base.Just b) l r ('GHC.Base.Just v)
+ Data.HList.Record: instance forall k (l :: k) r. Data.HList.Record.HasFieldM1 'GHC.Base.Nothing l r 'GHC.Base.Nothing
+ Data.HList.Record: instance forall k (l :: k) v (a :: [*]). Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.ExtraField l) => Data.HList.Record.HRearrange3 '[] (Data.Tagged.Tagged l v : a) '[]
+ Data.HList.Record: instance forall k (l :: k) v (r :: [*]) (r' :: [*]). (Data.HList.Record.HUpdateAtLabel2 l v r r', Data.HList.Record.HasField l (Data.HList.Record.Record r') v) => Data.HList.Record.HUpdateAtLabel Data.HList.Record.Record l v r r'
+ Data.HList.Record: instance forall k (l :: k) v (r :: [*]). (Data.HList.FakePrelude.ShowLabel l, GHC.Show.Show v, Data.HList.Record.ShowComponents r) => Data.HList.Record.ShowComponents (Data.Tagged.Tagged l v : r)
+ Data.HList.Record: instance forall k (l :: k) v (r :: [*]). Data.HList.Record.HasField' 'GHC.Types.True l (Data.Tagged.Tagged l v : r) v
+ Data.HList.Record: instance forall k (l :: k) v (xs :: [*]) (xs' :: [*]) x. Data.HList.Record.HUpdateAtLabel2 l v xs xs' => Data.HList.Record.HUpdateAtLabel1 'GHC.Types.False l v (x : xs) (x : xs')
+ Data.HList.Record: instance forall k (l :: k) v e (xs :: [*]). Data.HList.Record.HUpdateAtLabel1 'GHC.Types.True l v (Data.Tagged.Tagged l e : xs) (Data.Tagged.Tagged l v : xs)
+ Data.HList.Record: instance forall k (l :: k) v. Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound l ()) => Data.HList.Record.HUpdateAtLabel2 l v '[] '[]
+ Data.HList.Record: instance forall k (l1 :: k) l (ls :: [*]) (b :: GHC.Base.Maybe [*]) v1 (r1 :: [*]) (rin :: [*]) (rout :: [*]). (Data.HList.HList.HMemberM (Data.HList.FakePrelude.Label l1) (l : ls) b, Data.HList.Record.H2ProjectByLabels' b (l : ls) (Data.Tagged.Tagged l1 v1 : r1) rin rout) => Data.HList.Record.H2ProjectByLabels (l : ls) (Data.Tagged.Tagged l1 v1 : r1) rin rout
+ Data.HList.Record: instance forall k (l2 :: k) (r :: [k]) (l1 :: k). (Data.HList.Record.HLabelSet (l2 : r), Data.HList.Record.HLabelSet (l1 : r)) => Data.HList.Record.HLabelSet' l1 l2 'GHC.Types.False r
+ Data.HList.Record: instance forall k (ls :: [*]) (rout :: [*]) (r' :: [*]) (r'' :: [*]) (l :: k) v ll. (Data.HList.Record.HRearrange3 ls rout r', r'' ~ (Data.Tagged.Tagged l v : r'), ll ~ Data.HList.FakePrelude.Label l) => Data.HList.Record.HRearrange4 ll ls '[Data.Tagged.Tagged l v] rout r''
+ Data.HList.Record: instance forall k (r :: [*]) (l :: k) v. (Data.HList.FakePrelude.SameLength' r (Data.HList.Record.RecordValuesR r), Data.HList.FakePrelude.SameLength' (Data.HList.Record.RecordValuesR r) r, Data.HList.Record.RecordValues r) => Data.HList.Record.RecordValues (Data.Tagged.Tagged l v : r)
+ Data.HList.Record: instance forall k (r :: k) (x :: [*] -> *) (s :: [*]) (t :: [*]) a b. Data.HList.Record.HLensCxt r x s t a b => Data.HList.Record.HLens r x s t a b
+ Data.HList.Record: instance forall k (r1 :: [*]) (r2' :: [*]) (ru :: [*]) (l2 :: k) v2 f2. (Data.HList.Record.UnionSymRec r1 r2' ru, Data.HList.Record.HTPupdateAtLabel Data.HList.Record.Record l2 v2 ru, f2 ~ Data.Tagged.Tagged l2 v2) => Data.HList.Record.UnionSymRec' 'GHC.Types.True r1 f2 r2' ru
+ Data.HList.Record: instance forall k (rs :: [*]) (bs :: [*]) r readP_r (l :: k) v. (Data.HList.HList.HMapCxt Data.HList.HList.HList Data.HList.Record.ReadComponent (Data.HList.HList.AddProxy rs) bs, Data.HList.FakePrelude.ApplyAB Data.HList.Record.ReadComponent (Data.Proxy.Proxy r) readP_r, Data.HList.HList.HProxies rs, Data.HList.HList.HSequence Text.ParserCombinators.ReadP.ReadP (readP_r : bs) (r : rs), r ~ Data.Tagged.Tagged l v, Data.HList.FakePrelude.ShowLabel l, GHC.Read.Read v, Data.HList.HList.HSequence Text.ParserCombinators.ReadP.ReadP bs rs) => GHC.Read.Read (Data.HList.Record.Record (r : rs))
+ Data.HList.Record: instance forall k (x :: k). Data.HList.Record.HLabelSet '[x]
+ Data.HList.Record: instance forall k l (r :: [*]) (rin :: [*]) (rout :: [*]) (ls :: [*]) (r' :: [*]) (ll :: k). (Data.HList.Record.H2ProjectByLabels '[l] r rin rout, Data.HList.Record.HRearrange4 l ls rin rout r', l ~ Data.HList.FakePrelude.Label ll) => Data.HList.Record.HRearrange3 (l : ls) r r'
+ Data.HList.Record: instance forall k t (l :: k). (t ~ GHC.Types.Any, Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound l ())) => Data.HList.Record.HasField l (Data.HList.Record.Record '[]) t
+ Data.HList.Record: instance forall k tx (t :: k) x. tx ~ Data.Tagged.Tagged t x => Data.HList.FakePrelude.ApplyAB Data.HList.Record.TaggedFn x tx
+ Data.HList.Record: instance forall k v (l :: k) x y. (GHC.Read.Read v, Data.HList.FakePrelude.ShowLabel l, x ~ Data.Tagged.Tagged l v, Text.ParserCombinators.ReadP.ReadP x ~ y) => Data.HList.FakePrelude.ApplyAB Data.HList.Record.ReadComponent (Data.Proxy.Proxy x) y
+ Data.HList.Record: instance forall k1 k2 (l :: k2) (l' :: k1) (b :: GHC.Types.Bool) v e (xs :: [*]) (xs' :: [*]). (Data.HList.FakePrelude.HEqK l l' b, Data.HList.Record.HUpdateAtLabel1 b l v (Data.Tagged.Tagged l' e : xs) xs') => Data.HList.Record.HUpdateAtLabel2 l v (Data.Tagged.Tagged l' e : xs) xs'
+ Data.HList.Record: instance forall k1 k2 (l :: k2) (l1 :: k1) (b :: GHC.Types.Bool) v1 (r :: [*]) v. (Data.HList.FakePrelude.HEqK l l1 b, Data.HList.Record.HasField' b l (Data.Tagged.Tagged l1 v1 : r) v) => Data.HList.Record.HasField l (Data.HList.Record.Record (Data.Tagged.Tagged l1 v1 : r)) v
+ Data.HList.Record: instance forall k1 k2 k3 (l1 :: k3) (l2 :: k2) (r :: k1). Data.HList.FakePrelude.Fail (Data.HList.Record.DuplicatedLabel l1) => Data.HList.Record.HLabelSet' l1 l2 'GHC.Types.True r
+ Data.HList.Record: instance r1 ~ r1' => Data.HList.Record.UnionSymRec r1 '[] r1'
+ Data.HList.Record: type ExtraField x = ErrText "extra field" :<>: ErrShowType x
+ Data.HList.Record: type FieldNotFound key collection = (ErrText "key" :<>: ErrShowType key) :$$: (ErrText "could not be found in" :<>: ErrShowType collection)
+ Data.HList.Record: type family RecordValuesR r :: [*];
+ Data.HList.Record: }
+ Data.HList.RecordU: instance forall k (l :: k) (r :: [*]) (n :: Data.HList.FakePrelude.HNat) (u :: [*]) v. (Data.HList.Record.HFindLabel l r n, Data.HList.RecordU.HLookupByHNatUS n u (Data.Tagged.Tagged l v), Data.HList.Record.HasField l (Data.HList.Record.Record r) v, Data.HList.RecordU.RecordUSCxt r u) => Data.HList.Record.HasField l (Data.HList.RecordU.RecordUS r) v
+ Data.HList.RecordU: instance forall k (l :: k) (r :: [k]) (n :: Data.HList.FakePrelude.HNat) (ls :: [k]) (ns :: [Data.HList.FakePrelude.HNat]). (Data.HList.HList.HFind l r n, Data.HList.RecordU.HFindMany ls r ns) => Data.HList.RecordU.HFindMany (l : ls) r (n : ns)
+ Data.HList.RecordU: instance forall k (n :: Data.HList.FakePrelude.HNat) (u :: [*]) le (l :: k) e (t :: Data.HList.FakePrelude.HNat) (us :: [*]). (Data.HList.FakePrelude.HNat2Integral n, Data.HList.HArray.HLookupByHNatR n u ~ le, le ~ Data.Tagged.Tagged l e, Data.Array.Base.IArray Data.Array.Base.UArray e, e ~ Data.HList.RecordU.GetElemTy u) => Data.HList.RecordU.HLookupByHNatUS1 ('Data.Either.Left t) n u us le
+ Data.HList.RecordU: instance forall k (r :: [*]) (r' :: [*]) v (l :: k) (n :: Data.HList.FakePrelude.HNat). (r ~ r', v ~ Data.HList.RecordU.GetElemTy r, Data.HList.Record.HFindLabel l r n, Data.HList.FakePrelude.HNat2Integral n, Data.Array.Base.IArray Data.Array.Base.UArray v, Data.HList.Record.HasField l (Data.HList.Record.Record r') v) => Data.HList.Record.HUpdateAtLabel Data.HList.RecordU.RecordU l v r r'
+ Data.HList.RecordU: instance forall k (r :: [k]). Data.HList.RecordU.HFindMany '[] r '[]
+ Data.HList.RecordU: instance forall k (s :: [*]) (t :: [*]) a b (x :: k). (s ~ t, a ~ b, Data.Array.Base.IArray Data.Array.Base.UArray a, a ~ Data.HList.RecordU.GetElemTy s, Data.HList.Record.HLensCxt x Data.HList.RecordU.RecordU s t a b) => Data.HList.Labelable.Labelable x Data.HList.RecordU.RecordU s t a b
+ Data.HList.RecordU: instance forall k t1v (t :: k) v (rest :: [*]). t1v ~ Data.Tagged.Tagged t v => Data.HList.RecordU.ElemTyEq (t1v : rest)
+ Data.HList.RecordU: instance forall k v (ls :: [*]) (l :: k) (n :: Data.HList.FakePrelude.HNat). (Data.Array.Base.IArray Data.Array.Base.UArray v, v ~ Data.HList.RecordU.GetElemTy ls, Data.HList.Record.HFindLabel l ls n, Data.HList.FakePrelude.HNat2Integral n) => Data.HList.Record.HasField l (Data.HList.RecordU.RecordU ls) v
+ Data.HList.RecordU: instance forall k1 k2 t1v (t1 :: k2) v t2v (t2 :: k1) tv2 (rest :: [*]) tv1. (t1v ~ Data.Tagged.Tagged t1 v, t2v ~ Data.Tagged.Tagged t2 v, Data.HList.RecordU.ElemTyEq (tv2 : rest)) => Data.HList.RecordU.ElemTyEq (tv1 : tv2 : rest)
+ Data.HList.RecordU: instance forall k1 k2 txv (x :: k2) v tyw (y :: k1) w (b :: GHC.Types.Bool). (txv ~ Data.Tagged.Tagged x v, tyw ~ Data.Tagged.Tagged y w, Data.HList.FakePrelude.HEq v w b) => Data.HList.FakePrelude.HEqBy Data.HList.RecordU.EqTagValue txv tyw b
+ Data.HList.TIC: instance Data.Semigroup.Semigroup (Data.HList.Variant.Variant l) => Data.Semigroup.Semigroup (Data.HList.TIC.TIC l)
+ Data.HList.TIP: instance (Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound op (Data.HList.TIP.TIP db)), GHC.Base.Monad m) => Data.HList.TIP.TransTIPM1 'GHC.Types.False 'Data.HList.FakePrelude.HZero m op db
+ Data.HList.TIP: instance (Data.HList.HList.HZipList xL yL xyL, lty ~ (Data.HList.HList.HList xyL -> (Data.HList.HList.HList xL, Data.HList.HList.HList yL)), GHC.Types.Coercible lty (Data.HList.TIP.TIP xy -> (Data.HList.TIP.TIP x, Data.HList.TIP.TIP y)), Data.HList.TIP.UntagR x ~ xL, Data.HList.TIP.TagR xL ~ x, Data.HList.TIP.UntagR y ~ yL, Data.HList.TIP.TagR yL ~ y, Data.HList.TIP.UntagR xy ~ xyL, Data.HList.TIP.TagR xyL ~ xy, Data.HList.FakePrelude.SameLengths '[x, y, xy], Data.HList.TIP.UntagTag x, Data.HList.TIP.UntagTag y, Data.HList.TIP.UntagTag xy) => Data.HList.HListPrelude.HUnzip Data.HList.TIP.TIP x y xy
+ Data.HList.TIP: instance (Data.HList.HListPrelude.HUnzip Data.HList.TIP.TIP x y xy, Data.HList.HList.HZipList xL yL xyL, lty ~ (Data.HList.HList.HList xL -> Data.HList.HList.HList yL -> Data.HList.HList.HList xyL), GHC.Types.Coercible lty (Data.HList.TIP.TIP x -> Data.HList.TIP.TIP y -> Data.HList.TIP.TIP xy), Data.HList.TIP.UntagR x ~ xL, Data.HList.TIP.UntagR y ~ yL, Data.HList.TIP.UntagR xy ~ xyL, Data.HList.TIP.UntagTag x, Data.HList.TIP.UntagTag y, Data.HList.TIP.UntagTag xy) => Data.HList.HListPrelude.HZip Data.HList.TIP.TIP x y xy
+ Data.HList.TIP: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound arg (Data.HList.TIP.TIP db)) => Data.HList.TIP.TransTIP2 'GHC.Types.False arg op db
+ Data.HList.TIP: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound notfun (Data.HList.TIP.TIP db)) => Data.HList.TIP.TransTIP1 'GHC.Types.False 'Data.HList.FakePrelude.HZero notfun db
+ Data.HList.TIP: instance Data.HList.FakePrelude.Fail (Data.HList.FakePrelude.FieldNotFound op (Data.HList.TIP.TIP db)) => Data.HList.TIP.TransTIPM2 'GHC.Types.False m arg op db
+ Data.HList.TIP: instance Data.Semigroup.Semigroup (Data.HList.HList.HList a) => Data.Semigroup.Semigroup (Data.HList.TIP.TIP a)
+ Data.HList.TIP: instance forall k (e :: k) (v :: [*]) (v' :: [*]). (Data.HList.HListPrelude.HDeleteAtLabel Data.HList.Record.Record e v v', Data.HList.TIP.HTypeIndexed v') => Data.HList.HListPrelude.HDeleteAtLabel Data.HList.TIP.TIP e v v'
+ Data.HList.TIP: instance forall k (l :: [*]) tee (e :: k) e'. (Data.HList.TIP.HAllTaggedEq l, tee ~ Data.Tagged.Tagged e e') => Data.HList.TIP.HAllTaggedEq (tee : l)
+ Data.HList.TIP: instance tee ~ Data.Tagged.Tagged e e => Data.HList.HListPrelude.HOccurs e (Data.HList.TIP.TIP '[tee])
+ Data.HList.TypeEqO: instance 'GHC.Types.False ~ b => Data.HList.TypeEqO.TupleType x b
+ Data.HList.TypeEqO: instance 'GHC.Types.False ~ flag => Data.HList.TypeEqO.IsKeyFN t flag
+ Data.HList.TypeEqO: instance forall k (b :: GHC.Types.Bool) (x :: k) (y :: k). 'GHC.Types.False ~ b => Data.HList.FakePrelude.HEq x y b
+ Data.HList.TypeEqO: instance forall k (x :: k). Data.HList.FakePrelude.HEq x x 'GHC.Types.True
+ Data.HList.TypeEqO: instance hZero ~ 'Data.HList.FakePrelude.HZero => Data.HList.FakePrelude.ArityFwd f hZero
+ Data.HList.Variant: instance forall k (b :: k). Data.HList.FakePrelude.Fail "Unvariant applied to empty variant" => Data.HList.Variant.Unvariant1 b '[] (Data.Proxy.Proxy "Unvariant applied to empty variant")
+ Data.HList.Variant: instance forall k (l :: k) (xs :: [*]) e. (Data.HList.FakePrelude.ShowLabel l, Data.HList.Variant.VariantConstrs xs) => Data.HList.Variant.VariantConstrs (Data.Tagged.Tagged l e : xs)
+ Data.HList.Variant: instance forall k (l :: k) e (v :: [*]) (v' :: [*]) (n :: Data.HList.FakePrelude.HNat) _e. Data.HList.Variant.HUpdateVariantAtLabelCxt l e v v' n _e => Data.HList.Record.HUpdateAtLabel Data.HList.Variant.Variant l e v v'
+ Data.HList.Variant: instance forall k (l :: k) e (v :: [*]) b (bs :: [*]). (Data.HList.Variant.MkVariant l e v, Data.Data.Data e, Data.HList.Variant.GunfoldVariant (b : bs) v) => Data.HList.Variant.GunfoldVariant (Data.Tagged.Tagged l e : b : bs) v
+ Data.HList.Variant: instance forall k (l :: k) e (v :: [*]). (Data.HList.Variant.MkVariant l e v, Data.Data.Data e) => Data.HList.Variant.GunfoldVariant '[Data.Tagged.Tagged l e] v
+ Data.HList.Variant: instance forall k (l :: k) e (y :: [*]) le b (bs :: [*]). (Data.HList.Variant.MkVariant l e y, le ~ Data.Tagged.Tagged l e, Data.HList.Variant.ExtendsVariant (b : bs) y) => Data.HList.Variant.ExtendsVariant (le : b : bs) y
+ Data.HList.Variant: instance forall k (l :: k) v (vs :: [*]). (Data.HList.FakePrelude.ShowLabel l, GHC.Read.Read v, Data.HList.Variant.ReadVariant vs, Data.HList.HListPrelude.HOccursNot (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf vs)) => Data.HList.Variant.ReadVariant (Data.Tagged.Tagged l v : vs)
+ Data.HList.Variant: instance forall k (l :: k) v (y :: [*]) lv (t :: [*]). (Data.HList.Variant.MkVariant l v y, lv ~ Data.Tagged.Tagged l v) => Data.HList.Variant.ProjectExtendVariant' ('GHC.Base.Just t) lv y
+ Data.HList.Variant: instance forall k (l :: k) v lv. (Data.HList.FakePrelude.ShowLabel l, GHC.Show.Show v, lv ~ Data.Tagged.Tagged l v) => Data.HList.Variant.ShowVariant '[lv]
+ Data.HList.Variant: instance forall k (l :: k) v w (ws :: [*]). (Data.HList.FakePrelude.ShowLabel l, GHC.Show.Show v, Data.HList.Variant.ShowVariant (w : ws)) => Data.HList.Variant.ShowVariant (Data.Tagged.Tagged l v : w : ws)
+ Data.HList.Variant: instance forall k (t :: k) x. (Data.HList.Variant.Unvariant '[Data.Tagged.Tagged t x] x, Data.Semigroup.Semigroup x) => Data.Semigroup.Semigroup (Data.HList.Variant.Variant '[Data.Tagged.Tagged t x])
+ Data.HList.Variant: instance forall k (t :: k) x. (Data.HList.Variant.Unvariant '[Data.Tagged.Tagged t x] x, GHC.Base.Monoid x) => GHC.Base.Monoid (Data.HList.Variant.Variant '[Data.Tagged.Tagged t x])
+ Data.HList.Variant: instance forall k (v :: [*]) (r :: [*]) (nr :: Data.HList.FakePrelude.HNat) tx (t :: k) x tmx. (Data.HList.Variant.VariantToHMaybied v r, Data.HList.HList.HReplicateF nr Data.HList.Variant.ConstTaggedNothing () r, tx ~ Data.Tagged.Tagged t x, tmx ~ Data.Tagged.Tagged t (GHC.Base.Maybe x)) => Data.HList.Variant.VariantToHMaybied (tx : v) (tmx : r)
+ Data.HList.Variant: instance forall k (x :: [*]) (ys :: [*]) (t :: k) y ty. (Data.HList.Variant.ProjectVariant x ys, Data.HList.Record.HasField t (Data.HList.Variant.Variant x) (GHC.Base.Maybe y), Data.HList.HListPrelude.HOccursNot (Data.HList.FakePrelude.Label t) (Data.HList.Record.LabelsOf ys), ty ~ Data.Tagged.Tagged t y) => Data.HList.Variant.ProjectVariant x (ty : ys)
+ Data.HList.Variant: instance forall k (x :: [*]) le e (l :: k). (Data.HList.FakePrelude.HAllTaggedLV x, Data.HList.Variant.Unvariant '[le] e, Data.HList.Variant.MkVariant l e x, le ~ Data.Tagged.Tagged l e) => Data.HList.Variant.ExtendsVariant '[le] x
+ Data.HList.Variant: instance forall k (x :: k) (vs :: [*]) (n :: Data.HList.FakePrelude.HNat) v. (Data.HList.Record.HFindLabel x vs n, Data.HList.FakePrelude.HNat2Integral n, Data.HList.Record.HasField x (Data.HList.Variant.Variant vs) (GHC.Base.Maybe v)) => Data.HList.Variant.MkVariant x v vs
+ Data.HList.Variant: instance forall k (x :: k) (vs :: [*]) a (n :: Data.HList.FakePrelude.HNat). (Data.HList.Record.HasField x (Data.HList.Record.Record vs) a, Data.HList.Record.HFindLabel x vs n, Data.HList.FakePrelude.HNat2Integral n) => Data.HList.Record.HasField x (Data.HList.Variant.Variant vs) (GHC.Base.Maybe a)
+ Data.HList.Variant: instance forall k (x :: k) b (t :: [*]) (s :: [*]) a (si :: [*]) (so :: [*]) (ti :: [*]) (to :: [*]). (Data.HList.Variant.MkVariant x b t, Data.HList.Record.HasField x (Data.HList.Variant.Variant s) (GHC.Base.Maybe a), Data.HList.FakePrelude.SameLength s t, Data.HList.FakePrelude.SameLabels s t, Data.HList.Record.H2ProjectByLabels '[Data.HList.FakePrelude.Label x] s si so, Data.HList.Record.H2ProjectByLabels '[Data.HList.FakePrelude.Label x] t ti to, so ~ to, Data.HList.Record.HUpdateAtLabel Data.HList.Variant.Variant x b s t, Data.HList.Record.HUpdateAtLabel Data.HList.Variant.Variant x a t s) => Data.HList.Variant.HPrism x s t a b
+ Data.HList.Variant: instance forall k a (l :: k) v (r :: [*]) b (c :: [*]). (a ~ Data.Tagged.Tagged l v, Data.HList.Variant.MkVariant l v r, Data.Data.Data v, Data.HList.Variant.GfoldlVariant (b : c) r) => Data.HList.Variant.GfoldlVariant (a : b : c) r
+ Data.HList.Variant: instance forall k a v (l :: k) (b :: [*]). (Data.HList.Variant.Unvariant '[a] v, a ~ Data.Tagged.Tagged l v, Data.Data.Data v, Data.HList.Variant.MkVariant l v b) => Data.HList.Variant.GfoldlVariant '[a] b
+ Data.HList.Variant: instance forall k le (l :: k) e (v :: [*]). (le ~ Data.Tagged.Tagged l (GHC.Base.Maybe e), Data.HList.HListPrelude.HOccursNot (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf v)) => Data.HList.HListPrelude.HExtend le (Data.HList.Variant.Variant v)
+ Data.HList.Variant: instance forall k lv (l :: k) v (y :: [*]) (inY :: GHC.Base.Maybe [*]) (xs :: [*]). (lv ~ Data.Tagged.Tagged l v, Data.HList.HList.HMemberM lv y inY, Data.HList.Variant.ProjectExtendVariant' inY lv y, Data.HList.Variant.ProjectExtendVariant xs y) => Data.HList.Variant.ProjectExtendVariant (lv : xs) y
+ Data.HList.Variant: instance forall k lv (l :: k) v lv' v' (fs :: [*]) (b :: GHC.Base.Maybe [*]) (f :: GHC.Base.Maybe *) (rs :: [*]) (vs :: [*]). (lv ~ Data.Tagged.Tagged l v, lv' ~ Data.Tagged.Tagged l v', Data.HList.HList.HMemberM (Data.HList.FakePrelude.Label l) (Data.HList.Record.LabelsOf fs) b, Data.HList.Record.HasFieldM l (Data.HList.Record.Record fs) f, Data.HList.Record.DemoteMaybe (v -> v) f ~ (v -> v'), Data.HList.Variant.MkVariant l v' (lv' : rs), Data.HList.Variant.ZipVR fs vs rs) => Data.HList.Variant.ZipVR fs (lv : vs) (lv' : rs)
+ Data.HList.Variant: instance forall k tx (t :: k) x ty y txy (xs :: [*]) (ys :: [*]) (zs :: [*]). (tx ~ Data.Tagged.Tagged t x, ty ~ Data.Tagged.Tagged t y, txy ~ Data.Tagged.Tagged t (x, y), Data.HList.Variant.ZipVariant xs ys zs, Data.HList.Variant.MkVariant t (x, y) (txy : zs)) => Data.HList.Variant.ZipVariant (tx : xs) (ty : ys) (txy : zs)
+ Data.HList.Variant: instance forall k txy tx (t :: k) x ty y. (Data.HList.Variant.Unvariant '[txy] txy, tx ~ Data.Tagged.Tagged t x, ty ~ Data.Tagged.Tagged t y, txy ~ Data.Tagged.Tagged t (x, y)) => Data.HList.HListPrelude.HUnzip Data.HList.Variant.Variant '[tx] '[ty] '[txy]
+ Data.HList.Variant: instance forall k v (t1 :: k) e (vs :: [*]). v ~ Data.Tagged.Tagged t1 e => Data.HList.Variant.Unvariant1 'GHC.Types.True (v : vs) e
+ Data.HList.Variant: instance forall k x (s :: k). GHC.Enum.Enum x => GHC.Enum.Enum (Data.HList.Variant.Variant '[Data.Tagged.Tagged s x])
+ Data.HList.Variant: instance forall k x (t :: k) e (v :: [*]) y. (x ~ (Data.Tagged.Tagged t (GHC.Base.Maybe e), [Data.HList.Variant.Variant v]), y ~ [Data.HList.Variant.Variant (Data.Tagged.Tagged t e : v)], Data.HList.Variant.MkVariant t e (Data.Tagged.Tagged t e : v)) => Data.HList.FakePrelude.ApplyAB Data.HList.Variant.HMaybiedToVariantFs x y
+ Data.HList.Variant: instance forall k x a (b :: [*]) (t :: k). (Data.Semigroup.Semigroup x, Data.Semigroup.Semigroup (Data.HList.Variant.Variant (a : b))) => Data.Semigroup.Semigroup (Data.HList.Variant.Variant (Data.Tagged.Tagged t x : a : b))
+ Data.HList.Variant: instance forall k x a (b :: [*]) (t :: k). (GHC.Base.Monoid x, GHC.Base.Monoid (Data.HList.Variant.Variant (a : b))) => GHC.Base.Monoid (Data.HList.Variant.Variant (Data.Tagged.Tagged t x : a : b))
+ Data.HList.Variant: instance forall k x y (z :: [*]) (s :: k). (GHC.Enum.Enum x, GHC.Enum.Bounded x, GHC.Enum.Enum (Data.HList.Variant.Variant (y : z))) => GHC.Enum.Enum (Data.HList.Variant.Variant (Data.Tagged.Tagged s x : y : z))
+ Data.HList.Variant: instance forall k x2 (xs :: [*]) y2 (ys :: [*]) xy2 (xys :: [*]) tx (t :: k) x ty y txy. (Data.HList.HListPrelude.HUnzip Data.HList.Variant.Variant (x2 : xs) (y2 : ys) (xy2 : xys), Data.HList.FakePrelude.SameLength xs ys, Data.HList.FakePrelude.SameLength ys xys, tx ~ Data.Tagged.Tagged t x, ty ~ Data.Tagged.Tagged t y, txy ~ Data.Tagged.Tagged t (x, y)) => Data.HList.HListPrelude.HUnzip Data.HList.Variant.Variant (tx : x2 : xs) (ty : y2 : ys) (txy : xy2 : xys)
+ Data.HList.Variant: instance forall k y (t :: k) e x. y ~ Data.Tagged.Tagged t (GHC.Base.Maybe e) => Data.HList.FakePrelude.ApplyAB Data.HList.Variant.ConstTaggedNothing x y
+ Data.HList.Variant: instance forall k1 k2 a a' (b :: GHC.Types.Bool) (t :: k2) (xs :: [*]) (b2 :: GHC.Types.Bool) (b3 :: GHC.Types.Bool) (s :: k1). (Data.HList.FakePrelude.HEq a a' b, Data.HList.Variant.HAllEqVal (Data.Tagged.Tagged t a' : xs) b2, Data.HList.FakePrelude.HAnd b b2 ~ b3) => Data.HList.Variant.HAllEqVal (Data.Tagged.Tagged s a : Data.Tagged.Tagged t a' : xs) b3
+ Data.HList.Variant: instance forall k1 k2 ta (xs :: [*]) a' a (t :: k2) ta' (t' :: k1). (Data.HList.Variant.HAllEqVal' (ta : xs), a' ~ a, ta ~ Data.Tagged.Tagged t a, ta' ~ Data.Tagged.Tagged t' a') => Data.HList.Variant.HAllEqVal' (ta' : ta : xs)
+ Data.HList.Variant: instance forall k1 k2 x z (s :: k2) (xs :: [*]) (t :: k1) (sx :: [*]). (GHC.Enum.Bounded x, GHC.Enum.Bounded z, Data.HList.HList.HRevAppR (Data.Tagged.Tagged s x : xs) '[] ~ (Data.Tagged.Tagged t z : sx), Data.HList.Variant.MkVariant t z (Data.Tagged.Tagged s x : xs)) => GHC.Enum.Bounded (Data.HList.Variant.Variant (Data.Tagged.Tagged s x : xs))
- Data.HList.CommonMain: class RecordUSCxt (x :: [*]) (u :: [*]) | x -> u, u -> x where recordUSToHList (RecordUS x) = unsafeCoerce x hListToRecordUS x = RecordUS (unsafeCoerce x)
+ Data.HList.CommonMain: class RecordUSCxt (x :: [*]) (u :: [*]) | x -> u, u -> x
- Data.HList.CommonMain: hCompose :: (ArityRev f1 n1, ArityRev f2 n2, ArityFwd f1 n1, ArityFwd f2 n2, HAppendList1 * xs xs1 xsys, HSplitAt1 ([] *) n1 xsys xs xs1, HCurry' n f xsys r, HCurry' n1 f1 xs x, HCurry' n2 f2 xs1 r) => (x -> f2) -> f1 -> f
+ Data.HList.CommonMain: hCompose :: (HSplitAt1 [] * n2 xsys xs1 xs2, HCurry' n2 f1 xs1 x, HCurry' n1 b xs2 r, HCurry' n3 f2 xsys r, ArityFwd f1 n2, ArityFwd b n1, ArityRev f1 n2, ArityRev b n1, HAppendList1 * xs1 xs2 xsys) => (x -> b) -> f1 -> f2
- Data.HList.CommonMain: hMapOutV :: (SameLength x y, HMapAux Variant (HFmap f) x y, Unvariant y z, HMapOutV_gety x z ~ y) => f -> Variant x -> z
+ Data.HList.CommonMain: hMapOutV :: forall x y z f. (SameLength x y, HMapAux Variant (HFmap f) x y, Unvariant y z, HMapOutV_gety x z ~ y) => f -> Variant x -> z
- Data.HList.CommonMain: hMapV :: (SameLength' * * x y, SameLength' * * y x, HMapAux Variant (HFmap f) x y) => f -> Variant x -> Variant y
+ Data.HList.CommonMain: hMapV :: (SameLength' * * y x, SameLength' * * x y, HMapAux Variant HFmap f x y) => f -> Variant x -> Variant y
- Data.HList.CommonMain: hMaybied :: (Applicative f, Choice p, SameLength' * * r x, SameLength' * * x r, HMapAux HList (HFmap HCastF) x r, HFoldr HMaybiedToVariantFs [Variant ([] *)] x [Variant v1], VariantToHMaybied v r, VariantToHMaybied v1 x) => p (Variant v1) (f (Variant v)) -> p (Record x) (f (Record r))
+ Data.HList.CommonMain: hMaybied :: (Applicative f, Choice p, SameLength' * * x r, SameLength' * * r x, HMapAux HList HFmap HCastF x r, VariantToHMaybied v1 x, VariantToHMaybied v2 r, HFoldr HMaybiedToVariantFs [Variant [] *] x [Variant v1]) => p Variant v1 f Variant v2 -> p Record x f Record r
- Data.HList.CommonMain: hMaybied' :: (Applicative f, Choice p, SameLength' * * x x, HMapAux HList (HFmap HCastF) x x, HFoldr HMaybiedToVariantFs [Variant ([] *)] x [Variant v], VariantToHMaybied v x) => p (Variant v) (f (Variant v)) -> p (Record x) (f (Record x))
+ Data.HList.CommonMain: hMaybied' :: (HFoldr HMaybiedToVariantFs [Variant [] *] x [Variant v], VariantToHMaybied v x, HMapAux HList HFmap HCastF x x, SameLength' * * x x, Choice p, Applicative f) => p Variant v f Variant v -> p Record x f Record x
- Data.HList.CommonMain: mkTIC :: (KnownNat (HNat2Nat n), HAllTaggedLV l, HFind1 * i (UnLabel * i (LabelsOf l)) n, HasField * i (Record l) i, HLabelSet [*] (LabelsOf l), HAllTaggedEq l) => i -> TIC l
+ Data.HList.CommonMain: mkTIC :: (HAllTaggedEq l, HLabelSet [*] LabelsOf l, HAllTaggedLV l, KnownNat HNat2Nat n, HasField * i Record l i, HFind1 * i UnLabel * i LabelsOf l UnLabel * i LabelsOf l n) => i -> TIC l
- Data.HList.CommonMain: mkTIC' :: (HTypeIndexed l, MkVariant i i l) => i -> proxy l -> TIC l
+ Data.HList.CommonMain: mkTIC' :: forall i l proxy. (HTypeIndexed l, MkVariant i i l) => i -> proxy l -> TIC l
- Data.HList.CommonMain: mkTIC1 :: MkVariant i i '[Tagged i i] => i -> TIC '[Tagged i i]
+ Data.HList.CommonMain: mkTIC1 :: forall i. MkVariant i i '[Tagged i i] => i -> TIC '[Tagged i i]
- Data.HList.CommonMain: mkVariant1 :: Label k l -> e -> Variant ((:) * (Tagged k l e) ([] *))
+ Data.HList.CommonMain: mkVariant1 :: () => Label k l -> e -> Variant (:) * Tagged k l e [] *
- Data.HList.CommonMain: recToKW :: (HMapCxt HList TaggedToKW a b, HConcat b) => Record a -> HList (HConcatR b)
+ Data.HList.CommonMain: recToKW :: forall a b. (HMapCxt HList TaggedToKW a b, HConcat b) => Record a -> HList (HConcatR b)
- Data.HList.CommonMain: ticPrism' :: (HPrism a s t a b, a ~ b, s ~ t) => (forall f p. (Applicative f, Choice p) => (a `p` f b) -> (TIC s `p` f (TIC t)))
+ Data.HList.CommonMain: ticPrism' :: forall s t a b. (HPrism a s t a b, a ~ b, s ~ t) => (forall f p. (Applicative f, Choice p) => (a `p` f b) -> (TIC s `p` f (TIC t)))
- Data.HList.CommonMain: ticVariant :: (Functor f, Profunctor p) => p (Variant t) (f (Variant l)) -> p (TIC t) (f (TIC l))
+ Data.HList.CommonMain: ticVariant :: (Functor f, Profunctor p) => p Variant l1 f Variant l2 -> p TIC l1 f TIC l2
- Data.HList.CommonMain: ticVariant' :: (Functor f, Profunctor p) => p (Variant t) (f (Variant t)) -> p (TIC t) (f (TIC t))
+ Data.HList.CommonMain: ticVariant' :: (Profunctor p, Functor f) => p Variant l f Variant l -> p TIC l f TIC l
- Data.HList.CommonMain: tipHList :: (Functor f, Profunctor p, TagUntagFD a ta, TagUntagFD a1 l) => p (HList a) (f (HList a1)) -> p (TIP ta) (f (TIP l))
+ Data.HList.CommonMain: tipHList :: (TagUntagFD a2 l, TagUntagFD a1 ta, Functor f, Profunctor p) => p HList a1 f HList a2 -> p TIP ta f TIP l
- Data.HList.CommonMain: tipHList' :: (Functor f, Profunctor p, TagUntagFD a ta) => p (HList a) (f (HList a)) -> p (TIP ta) (f (TIP ta))
+ Data.HList.CommonMain: tipHList' :: (Profunctor p, Functor f, TagUntagFD a l) => p HList a f HList a -> p TIP l f TIP l
- Data.HList.CommonMain: tipRecord :: (Functor f, Profunctor p) => p (Record r) (f (Record l)) -> p (TIP r) (f (TIP l))
+ Data.HList.CommonMain: tipRecord :: (Functor f, Profunctor p) => p Record r f Record l -> p TIP r f TIP l
- Data.HList.CommonMain: tipRecord' :: (Functor f, Profunctor p) => p (Record r) (f (Record r)) -> p (TIP r) (f (TIP r))
+ Data.HList.CommonMain: tipRecord' :: (Profunctor p, Functor f) => p Record l f Record l -> p TIP l f TIP l
- Data.HList.CommonMain: tipyLens :: (Functor f, HAllTaggedLV s, HAllTaggedLV t, SameLabels [*] [*] s t, SameLength' * * s t, SameLength' * * t s, HUpdateAtLabel2 * a a s t, HUpdateAtLabel2 * a a t s, HasField * a (Record s) a, HasField * a (Record t) a, HLabelSet [*] (LabelsOf t), HLabelSet [*] (LabelsOf s), HAllTaggedEq s, HAllTaggedEq t) => (a -> f a) -> TIP s -> f (TIP t)
+ Data.HList.CommonMain: tipyLens :: (Functor f, HAppendList l1 (:) * Tagged * a2 a2 xs2, HAllTaggedLV HAppendListR * l1 (:) * Tagged * a2 a2 xs2, HLabelSet [*] LabelsOf HAppendListR * l1 (:) * Tagged * a2 a2 xs2, HAllTaggedEq HAppendListR * l1 (:) * Tagged * a2 a2 xs2, HFind2 * b Label * a1 LabelsOf xs1 (:) * Label * x LabelsOf xs1 n, HEq * Label * a1 Label * x b, HLengthEq2 HNat l1 n, HLengthEq1 HNat l1 n, SameLength' * * HReplicateR * n () l1, HAppendList1 * l1 (:) * Tagged * a1 a1 xs2 (:) * Tagged * x x xs1, HSplitAt1 [] * n (:) * Tagged * x x xs1 l1 (:) * Tagged * a1 a1 xs2) => (a1 -> f a2) -> TIP (:) * Tagged * x x xs1 -> f TIP HAppendListR * l1 (:) * Tagged * a2 a2 xs2
- Data.HList.CommonMain: tipyLens' :: (Functor f, HAllTaggedLV a, SameLabels [*] [*] a a, SameLength' * * a a, HUpdateAtLabel2 * b b a a, HasField * b (Record a) b, HLabelSet [*] (LabelsOf a), HAllTaggedEq a) => (b -> f b) -> TIP a -> f (TIP a)
+ Data.HList.CommonMain: tipyLens' :: (Functor f, SameLabels [*] [*] t t, SameLength' * * t t, HAllTaggedLV t, HLabelSet [*] LabelsOf t, HAllTaggedEq t, HUpdateAtLabel2 * a a t t, HasField * a Record t a) => (a -> f a) -> TIP t -> f TIP t
- Data.HList.CommonMain: tipyProject :: (HAllTaggedLV l, H2ProjectByLabels ls t l b, HLabelSet [*] (LabelsOf l), HAllTaggedEq l) => proxy ls -> TIP t -> TIP l
+ Data.HList.CommonMain: tipyProject :: (H2ProjectByLabels ls t l b, HAllTaggedEq l, HLabelSet [*] LabelsOf l, HAllTaggedLV l) => proxy ls -> TIP t -> TIP l
- Data.HList.CommonMain: tipyProject2 :: (HAllTaggedLV l, HAllTaggedLV l1, H2ProjectByLabels ls r l l1, HLabelSet [*] (LabelsOf l), HLabelSet [*] (LabelsOf l1), HAllTaggedEq l, HAllTaggedEq l1) => proxy ls -> TIP r -> (TIP l, TIP l1)
+ Data.HList.CommonMain: tipyProject2 :: (HAllTaggedLV l2, HAllTaggedLV l1, HLabelSet [*] LabelsOf l2, HLabelSet [*] LabelsOf l1, HAllTaggedEq l2, HAllTaggedEq l1, H2ProjectByLabels ls r l1 l2) => proxy ls -> TIP r -> (TIP l1, TIP l2)
- Data.HList.CommonMain: tipyTuple :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v2 v'1, HDeleteAtLabel * r b v v2, HDeleteAtLabel * r b v1 v', HOccurs a (r v), HOccurs a (r v2), HOccurs b (r v), HOccurs b (r v1)) => r v -> (a, b)
+ Data.HList.CommonMain: tipyTuple :: (HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v3 v'2, HDeleteAtLabel * r a v2 v'1, HDeleteAtLabel * r a v1 v3, HOccurs b r v1, HOccurs b r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b)
- Data.HList.CommonMain: tipyTuple3 :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v3 v4, HDeleteAtLabel * r a v6 v'2, HDeleteAtLabel * r b v v5, HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v4 v'1, HDeleteAtLabel * r c v v3, HDeleteAtLabel * r c v2 v', HDeleteAtLabel * r c v5 v6, HOccurs a (r v), HOccurs a (r v3), HOccurs a (r v6), HOccurs b (r v), HOccurs b (r v1), HOccurs b (r v4), HOccurs c (r v), HOccurs c (r v2), HOccurs c (r v5)) => r v -> (a, b, c)
+ Data.HList.CommonMain: tipyTuple3 :: (HDeleteAtLabel * r b v1 v5, HDeleteAtLabel * r b v7 v'3, HDeleteAtLabel * r b v6 v4, HDeleteAtLabel * r c v5 v3, HDeleteAtLabel * r c v1 v2, HDeleteAtLabel * r c v4 v'2, HDeleteAtLabel * r a v3 v'1, HDeleteAtLabel * r a v2 v7, HDeleteAtLabel * r a v1 v6, HOccurs b r v1, HOccurs b r v7, HOccurs b r v6, HOccurs c r v5, HOccurs c r v1, HOccurs c r v4, HOccurs a r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b, c)
- Data.HList.CommonMain: tipyTuple4 :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v4 v5, HDeleteAtLabel * r a v8 v9, HDeleteAtLabel * r a v12 v'3, HDeleteAtLabel * r b v v10, HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v5 v6, HDeleteAtLabel * r b v9 v'2, HDeleteAtLabel * r c v v7, HDeleteAtLabel * r c v2 v3, HDeleteAtLabel * r c v6 v'1, HDeleteAtLabel * r c v10 v11, HDeleteAtLabel * r d v v4, HDeleteAtLabel * r d v3 v', HDeleteAtLabel * r d v7 v8, HDeleteAtLabel * r d v11 v12, HOccurs a (r v), HOccurs a (r v4), HOccurs a (r v8), HOccurs a (r v12), HOccurs b (r v), HOccurs b (r v1), HOccurs b (r v5), HOccurs b (r v9), HOccurs c (r v), HOccurs c (r v2), HOccurs c (r v6), HOccurs c (r v10), HOccurs d (r v), HOccurs d (r v3), HOccurs d (r v7), HOccurs d (r v11)) => r v -> (a, b, c, d)
+ Data.HList.CommonMain: tipyTuple4 :: (HDeleteAtLabel * r b v1 v10, HDeleteAtLabel * r b v13 v'4, HDeleteAtLabel * r b v12 v9, HDeleteAtLabel * r b v11 v8, HDeleteAtLabel * r c v10 v7, HDeleteAtLabel * r c v1 v6, HDeleteAtLabel * r c v9 v'3, HDeleteAtLabel * r c v8 v5, HDeleteAtLabel * r d v7 v4, HDeleteAtLabel * r d v6 v3, HDeleteAtLabel * r d v1 v2, HDeleteAtLabel * r d v5 v'2, HDeleteAtLabel * r a v4 v'1, HDeleteAtLabel * r a v3 v13, HDeleteAtLabel * r a v2 v12, HDeleteAtLabel * r a v1 v11, HOccurs b r v1, HOccurs b r v13, HOccurs b r v12, HOccurs b r v11, HOccurs c r v10, HOccurs c r v1, HOccurs c r v9, HOccurs c r v8, HOccurs d r v7, HOccurs d r v6, HOccurs d r v1, HOccurs d r v5, HOccurs a r v4, HOccurs a r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b, c, d)
- Data.HList.CommonMain: tipyTuple5 :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v5 v6, HDeleteAtLabel * r a v10 v11, HDeleteAtLabel * r a v15 v16, HDeleteAtLabel * r a v20 v'4, HDeleteAtLabel * r b v v17, HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v6 v7, HDeleteAtLabel * r b v11 v12, HDeleteAtLabel * r b v16 v'3, HDeleteAtLabel * r c v v13, HDeleteAtLabel * r c v2 v3, HDeleteAtLabel * r c v7 v8, HDeleteAtLabel * r c v12 v'2, HDeleteAtLabel * r c v17 v18, HDeleteAtLabel * r d v v9, HDeleteAtLabel * r d v3 v4, HDeleteAtLabel * r d v8 v'1, HDeleteAtLabel * r d v13 v14, HDeleteAtLabel * r d v18 v19, HDeleteAtLabel * r e v v5, HDeleteAtLabel * r e v4 v', HDeleteAtLabel * r e v9 v10, HDeleteAtLabel * r e v14 v15, HDeleteAtLabel * r e v19 v20, HOccurs a (r v), HOccurs a (r v5), HOccurs a (r v10), HOccurs a (r v15), HOccurs a (r v20), HOccurs b (r v), HOccurs b (r v1), HOccurs b (r v6), HOccurs b (r v11), HOccurs b (r v16), HOccurs c (r v), HOccurs c (r v2), HOccurs c (r v7), HOccurs c (r v12), HOccurs c (r v17), HOccurs d (r v), HOccurs d (r v3), HOccurs d (r v8), HOccurs d (r v13), HOccurs d (r v18), HOccurs e (r v), HOccurs e (r v4), HOccurs e (r v9), HOccurs e (r v14), HOccurs e (r v19)) => r v -> (a, b, c, d, e)
+ Data.HList.CommonMain: tipyTuple5 :: (HDeleteAtLabel * r b v1 v17, HDeleteAtLabel * r b v21 v'5, HDeleteAtLabel * r b v20 v16, HDeleteAtLabel * r b v19 v15, HDeleteAtLabel * r b v18 v14, HDeleteAtLabel * r c v17 v13, HDeleteAtLabel * r c v1 v12, HDeleteAtLabel * r c v16 v'4, HDeleteAtLabel * r c v15 v11, HDeleteAtLabel * r c v14 v10, HDeleteAtLabel * r d v13 v9, HDeleteAtLabel * r d v12 v8, HDeleteAtLabel * r d v1 v7, HDeleteAtLabel * r d v11 v'3, HDeleteAtLabel * r d v10 v6, HDeleteAtLabel * r e v9 v5, HDeleteAtLabel * r e v8 v4, HDeleteAtLabel * r e v7 v3, HDeleteAtLabel * r e v1 v2, HDeleteAtLabel * r e v6 v'2, HDeleteAtLabel * r a v5 v'1, HDeleteAtLabel * r a v4 v21, HDeleteAtLabel * r a v3 v20, HDeleteAtLabel * r a v2 v19, HDeleteAtLabel * r a v1 v18, HOccurs b r v1, HOccurs b r v21, HOccurs b r v20, HOccurs b r v19, HOccurs b r v18, HOccurs c r v17, HOccurs c r v1, HOccurs c r v16, HOccurs c r v15, HOccurs c r v14, HOccurs d r v13, HOccurs d r v12, HOccurs d r v1, HOccurs d r v11, HOccurs d r v10, HOccurs e r v9, HOccurs e r v8, HOccurs e r v7, HOccurs e r v1, HOccurs e r v6, HOccurs a r v5, HOccurs a r v4, HOccurs a r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b, c, d, e)
- Data.HList.CommonMain: typeIndexed :: (TypeIndexed r tr, TypeIndexedCxt s t a b, Profunctor p, Functor f) => p (tr (TagR a)) (f (tr (TagR b))) -> p (r s) (f (r t))
+ Data.HList.CommonMain: typeIndexed :: forall p f s t a b. (TypeIndexed r tr, TypeIndexedCxt s t a b, Profunctor p, Functor f) => p (tr (TagR a)) (f (tr (TagR b))) -> p (r s) (f (r t))
- Data.HList.CommonMain: typeIndexed' :: (Functor f, Profunctor p, HAllTaggedLV s, SameLabels [*] [*] s s, SameLength' * * s s, SameLength' * * (RecordValuesR s) (RecordValuesR s), HMapAux HList TaggedFn (RecordValuesR s) s, RecordValues s, HLabelSet [*] (LabelsOf s), TagUntagFD (RecordValuesR s) (TagR (RecordValuesR s)), TypeIndexed r tr, Coercible [*] (TagR (RecordValuesR s)) s) => p (tr (TagR (RecordValuesR s))) (f (tr (TagR (RecordValuesR s)))) -> p (r s) (f (r s))
+ Data.HList.CommonMain: typeIndexed' :: ((~#) [*] [*] RecordValuesR TagR b b, Functor f, Profunctor p, TagUntagFD b TagR b, HLabelSet [*] LabelsOf TagR b, HAllTaggedLV TagR b, SameLength' * * b b, SameLength' * * TagR b TagR b, SameLabels [*] [*] TagR b TagR b, RecordValues TagR b, HMapAux HList TaggedFn b TagR b, TypeIndexed r tr) => p tr TagR b f tr TagR b -> p r TagR b f r TagR b
- Data.HList.CommonMain: unboxed :: (Profunctor p, Functor f, RecordToRecordU x, RecordUToRecord y) => RecordU x `p` f (RecordU y) -> Record x `p` f (Record y)
+ Data.HList.CommonMain: unboxed :: forall x y f p. (Profunctor p, Functor f, RecordToRecordU x, RecordUToRecord y) => RecordU x `p` f (RecordU y) -> Record x `p` f (Record y)
- Data.HList.CommonMain: unboxed' :: (Functor f, KnownNat (HNat2Nat n), IArray UArray (GetElemTy x), Profunctor p, SameLength' * * (HReplicateR * n ()) x, HLengthEq2 HNat x n, HLengthEq1 HNat x n, HList2List (RecordValuesR x) (GetElemTy x), HMapAux HList TaggedFn (RecordValuesR x) x, RecordValues x) => p (RecordU x) (f (RecordU x)) -> p (Record x) (f (Record x))
+ Data.HList.CommonMain: unboxed' :: (HMapAux HList TaggedFn RecordValuesR y y, SameLength' * * HReplicateR * n () y, IArray UArray GetElemTy y, HLengthEq2 HNat y n, HLengthEq1 HNat y n, KnownNat HNat2Nat n, HList2List RecordValuesR y GetElemTy y, RecordValues y, Functor f, Profunctor p) => p RecordU y f RecordU y -> p Record y f Record y
- Data.HList.CommonMain: unboxedS :: (Functor f, Profunctor p, SameLength' * * u g, SameLength' * * u1 g1, SameLength' * * g u, SameLength' * * g1 u1, HGroupBy * EqTagValue x g, HGroupBy * EqTagValue x1 g1, HMapAux HList BoxF u1 g1, HMapAux HList UnboxF g u, HConcatFD g1 x1, HMapUnboxF g u, HMapUnboxF g1 u1) => p (RecordUS x) (f (RecordUS x1)) -> p (Record x) (f (Record x1))
+ Data.HList.CommonMain: unboxedS :: (HMapAux HList BoxF u1 g1, HMapAux HList UnboxF g2 u2, SameLength' * * g1 u1, SameLength' * * u1 g1, SameLength' * * g2 u2, SameLength' * * u2 g2, HConcatFD g1 x1, Functor f, Profunctor p, HGroupBy * EqTagValue x2 g2, HGroupBy * EqTagValue x1 g1, HMapUnboxF g2 u2, HMapUnboxF g1 u1) => p RecordUS x2 f RecordUS x1 -> p Record x2 f Record x1
- Data.HList.CommonMain: unboxedS' :: (Functor f, Profunctor p, SameLength' * * u g, SameLength' * * g u, HGroupBy * EqTagValue x g, HMapAux HList BoxF u g, HMapAux HList UnboxF g u, HConcatFD g x, HMapUnboxF g u) => p (RecordUS x) (f (RecordUS x)) -> p (Record x) (f (Record x))
+ Data.HList.CommonMain: unboxedS' :: (HMapAux HList UnboxF g u, HMapAux HList BoxF u g, HGroupBy * EqTagValue x g, Profunctor p, Functor f, HConcatFD g x, SameLength' * * u g, SameLength' * * g u, HMapUnboxF g u) => p RecordUS x f RecordUS x -> p Record x f Record x
- Data.HList.CommonMain: unvarianted' :: (Functor f, SameLabels [*] [*] s s, SameLength' * * s s, Unvariant1 Bool b s a, HAllEqVal' ((:) * (Tagged * () a) s), HAllEqVal s b, HAllEqVal ((:) * (Tagged * () a) s) b) => (a -> f a) -> Variant s -> f (Variant s)
+ Data.HList.CommonMain: unvarianted' :: (Functor f, SameLength' * * t t, SameLabels [*] [*] t t, HAllEqVal (:) * Tagged * () a t b, HAllEqVal t b, HAllEqVal' (:) * Tagged * () a t, Unvariant1 Bool b t a) => (a -> f a) -> Variant t -> f Variant t
- Data.HList.Data: type DataHListFlatCxt na g a = (HBuild' '[] g, Typeable (HListFlat a), TypeablePolyK a, HFoldl (GfoldlK C) (C g) a (C (HList a)), HFoldr (GunfoldK C) (C g) (HReplicateR na ()) (C (HList a)), HLengthEq a na, HReplicate na ())
+ Data.HList.Data: type DataHListFlatCxt na g a = (g ~ FoldRArrow a (HList a), HBuild' '[] g, Typeable (HListFlat a), TypeablePolyK a, HFoldl (GfoldlK C) (C g) a (C (HList a)), HFoldr (GunfoldK C) (C g) (HReplicateR na ()) (C (HList a)), HLengthEq a na, HReplicate na ())
- Data.HList.FakePrelude: class Apply f a where type family ApplyR f a :: *
+ Data.HList.FakePrelude: class Apply f a where {
- Data.HList.FakePrelude: class Fail x
+ Data.HList.FakePrelude: class Fail (x :: k)
- Data.HList.FakePrelude: class (SameLength' x y, SameLength' y x) => SameLength (x :: [k]) (y :: [m]) where sameLength = id
+ Data.HList.FakePrelude: class (SameLength' x y, SameLength' y x) => SameLength (x :: [k]) (y :: [m])
- Data.HList.HArray: class HDeleteAtHNat (n :: HNat) (l :: [*]) where type family HDeleteAtHNatR (n :: HNat) (l :: [*]) :: [*]
+ Data.HList.HArray: class HDeleteAtHNat (n :: HNat) (l :: [*]) where {
- Data.HList.HArray: class HLookupByHNat (n :: HNat) (l :: [*]) where type family HLookupByHNatR (n :: HNat) (l :: [*]) :: *
+ Data.HList.HArray: class HLookupByHNat (n :: HNat) (l :: [*]) where {
- Data.HList.HArray: class HUpdateAtHNat (n :: HNat) e (l :: [*]) where type family HUpdateAtHNatR (n :: HNat) e (l :: [*]) :: [*]
+ Data.HList.HArray: class HUpdateAtHNat' n e l l => HUpdateAtHNat n e l
- Data.HList.HArray: hProjectAwayByHNats :: (Apply (FHUProj False ns) (t, Proxy HNat HZero), HUnfoldFD (FHUProj False ns) (ApplyR (FHUProj False ns) (t, Proxy HNat HZero)) z) => Proxy [HNat] ns -> t -> HList z
+ Data.HList.HArray: hProjectAwayByHNats :: (HUnfoldFD FHUProj False ns ApplyR FHUProj False ns (a, Proxy HNat HZero) z, Apply FHUProj False ns (a, Proxy HNat HZero)) => Proxy [HNat] ns -> a -> HList z
- Data.HList.HArray: hProjectByHNats :: (Apply (FHUProj True ns) (t, Proxy HNat HZero), HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (t, Proxy HNat HZero)) z) => Proxy [HNat] ns -> t -> HList z
+ Data.HList.HArray: hProjectByHNats :: (HUnfoldFD FHUProj True ns ApplyR FHUProj True ns (a, Proxy HNat HZero) z, Apply FHUProj True ns (a, Proxy HNat HZero)) => Proxy [HNat] ns -> a -> HList z
- Data.HList.HArray: hProjectByHNats' :: (SameLength' * * a b, SameLength' * * b a, HMapAux r (FHLookupByHNat l) a b) => r a -> HList l -> r b
+ Data.HList.HArray: hProjectByHNats' :: (SameLength' * * a b, SameLength' * * b a, HMapAux r FHLookupByHNat l a b) => r a -> HList l -> r b
- Data.HList.HArray: hSplitByHNats :: (Apply (FHUProj False ns) (t, Proxy HNat HZero), Apply (FHUProj True ns) (t, Proxy HNat HZero), HUnfoldFD (FHUProj False ns) (ApplyR (FHUProj False ns) (t, Proxy HNat HZero)) z1, HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (t, Proxy HNat HZero)) z) => Proxy [HNat] ns -> t -> (HList z, HList z1)
+ Data.HList.HArray: hSplitByHNats :: (Apply FHUProj False ns (a, Proxy HNat HZero), Apply FHUProj True ns (a, Proxy HNat HZero), HUnfoldFD FHUProj False ns ApplyR FHUProj False ns (a, Proxy HNat HZero) z2, HUnfoldFD FHUProj True ns ApplyR FHUProj True ns (a, Proxy HNat HZero) z1) => Proxy [HNat] ns -> a -> (HList z1, HList z2)
- Data.HList.HArray: type HProjectAwayByHNatsCtx ns l = (Apply (FHUProj False ns) (HList l, Proxy HZero), HUnfold' (FHUProj False ns) (HList l, Proxy HZero))
+ Data.HList.HArray: type HProjectAwayByHNatsCtx ns l = (Apply (FHUProj False ns) (HList l, Proxy 'HZero), HUnfold' (FHUProj False ns) (HList l, Proxy 'HZero))
- Data.HList.HArray: type HProjectAwayByHNatsR (ns :: [HNat]) (l :: [*]) = HUnfold (FHUProj False ns) (HList l, Proxy HZero)
+ Data.HList.HArray: type HProjectAwayByHNatsR (ns :: [HNat]) (l :: [*]) = HUnfold (FHUProj False ns) (HList l, Proxy 'HZero)
- Data.HList.HArray: type HProjectByHNatsCtx ns l = (Apply (FHUProj True ns) (HList l, Proxy HZero), HUnfold' (FHUProj True ns) (HList l, Proxy HZero))
+ Data.HList.HArray: type HProjectByHNatsCtx ns l = (Apply (FHUProj True ns) (HList l, Proxy 'HZero), HUnfold' (FHUProj True ns) (HList l, Proxy 'HZero))
- Data.HList.HArray: type HProjectByHNatsR (ns :: [HNat]) (l :: [*]) = HUnfold (FHUProj True ns) (HList l, Proxy HZero)
+ Data.HList.HArray: type HProjectByHNatsR (ns :: [HNat]) (l :: [*]) = HUnfold (FHUProj True ns) (HList l, Proxy 'HZero)
- Data.HList.HCurry: hCompose :: (ArityRev f1 n1, ArityRev f2 n2, ArityFwd f1 n1, ArityFwd f2 n2, HAppendList1 * xs xs1 xsys, HSplitAt1 ([] *) n1 xsys xs xs1, HCurry' n f xsys r, HCurry' n1 f1 xs x, HCurry' n2 f2 xs1 r) => (x -> f2) -> f1 -> f
+ Data.HList.HCurry: hCompose :: (HSplitAt1 [] * n2 xsys xs1 xs2, HCurry' n2 f1 xs1 x, HCurry' n1 b xs2 r, HCurry' n3 f2 xsys r, ArityFwd f1 n2, ArityFwd b n1, ArityRev f1 n2, ArityRev b n1, HAppendList1 * xs1 xs2 xsys) => (x -> b) -> f1 -> f2
- Data.HList.HList: class (FromHJustR (ToHJustR l) ~ l) => FromHJust l where type family FromHJustR l :: [*]
+ Data.HList.HList: class (FromHJustR (ToHJustR l) ~ l) => FromHJust l where {
- Data.HList.HList: class HFind1 e l n => HFind (e :: k) (l :: [k]) (n :: HNat) | e l -> n
+ Data.HList.HList: class HFind1 e l l n => HFind (e :: k) (l :: [k]) (n :: HNat) | e l -> n
- Data.HList.HList: class HFind1 (e :: k) (l :: [k]) (n :: HNat) | e l -> n
+ Data.HList.HList: class HFind1 (e :: k) (l :: [k]) (l0 :: [k]) (n :: HNat) | e l -> n
- Data.HList.HList: class HFind2 (b :: Bool) (e :: k) (l :: [k]) (n :: HNat) | b e l -> n
+ Data.HList.HList: class HFind2 (b :: Bool) (e :: k) (l :: [k]) (l0 :: [k]) (n :: HNat) | b e l -> n
- Data.HList.HList: class HInit xs where type family HInitR xs :: [*]
+ Data.HList.HList: class HInit xs where {
- Data.HList.HList: class HSplit l where type family HSplitT l :: [*] type family HSplitF l :: [*]
+ Data.HList.HList: class HSplit l where {
- Data.HList.HList: class FromHJustR (ToHJustR l) ~ l => ToHJust l where type family ToHJustR l :: [*]
+ Data.HList.HList: class FromHJustR (ToHJustR l) ~ l => ToHJust l where {
- Data.HList.HList: hAddTag :: (SameLength' * * a b, SameLength' * * b a, HMapAux r (HAddTag t) a b) => t -> r a -> r b
+ Data.HList.HList: hAddTag :: (SameLength' * * a b, SameLength' * * b a, HMapAux r HAddTag t a b) => t -> r a -> r b
- Data.HList.HList: hFlag :: (SameLength' * * a b, SameLength' * * b a, HMapAux r (HAddTag (Proxy Bool True)) a b) => r a -> r b
+ Data.HList.HList: hFlag :: (HMapAux r HAddTag Proxy Bool True a b, SameLength' * * b a, SameLength' * * a b) => r a -> r b
- Data.HList.HList: hLast :: HRevApp l1 ([] *) ((:) * e l) => HList l1 -> e
+ Data.HList.HList: hLast :: HRevApp l1 [] * (:) * e l => HList l1 -> e
- Data.HList.HList: hMap :: (SameLength' * * a b, SameLength' * * b a, HMapAux r f a b) => f -> r a -> r b
+ Data.HList.HList: hMap :: (HMapAux r f a b, SameLength' * * b a, SameLength' * * a b) => f -> r a -> r b
- Data.HList.HList: hMapL :: (SameLength' * * a b, SameLength' * * b a, HMapAux HList f a b) => f -> HList a -> HList b
+ Data.HList.HList: hMapL :: (HMapAux HList f a b, SameLength' * * b a, SameLength' * * a b) => f -> HList a -> HList b
- Data.HList.HList: hMapOut :: HMapOut f l e => f -> HList l -> [e]
+ Data.HList.HList: hMapOut :: forall f e l. HMapOut f l e => f -> HList l -> [e]
- Data.HList.HList: hReverse_ :: HRevApp l1 ([] *) l3 => HList l1 -> HList l3
+ Data.HList.HList: hReverse_ :: HRevApp l1 [] * l3 => HList l1 -> HList l3
- Data.HList.HList: hSequence2 :: (Applicative f, HFoldr (LiftA2 FHCons) (f (HList ([] *))) l (f a)) => HList l -> f a
+ Data.HList.HList: hSequence2 :: (HFoldr LiftA2 FHCons f HList [] * l f a, Applicative f) => HList l -> f a
- Data.HList.HList: hTuple :: (Functor f, Profunctor p, HTuple v a, HTuple v1 t) => p a (f t) -> p (HList v) (f (HList v1))
+ Data.HList.HList: hTuple :: (HTuple v2 t, HTuple v1 a, Functor f, Profunctor p) => p a f t -> p HList v1 f HList v2
- Data.HList.HList: hTuple' :: (Functor f, Profunctor p, HTuple v t) => p t (f t) -> p (HList v) (f (HList v))
+ Data.HList.HList: hTuple' :: (Profunctor p, Functor f, HTuple v a) => p a f a -> p HList v f HList v
- Data.HList.HList: hUnfold :: (Apply f a, HUnfoldFD f (ApplyR f a) z) => f -> a -> HList z
+ Data.HList.HList: hUnfold :: (Apply f a, HUnfoldFD f ApplyR f a z) => f -> a -> HList z
- Data.HList.HList: listAsHList :: (Applicative f, Choice p, HList2List l e, HList2List l1 e1) => p (HList l1) (f (HList l)) -> p [e1] (f [e])
+ Data.HList.HList: listAsHList :: (Applicative f, Choice p, HList2List l2 e2, HList2List l1 e1) => p HList l2 f HList l1 -> p [e2] f [e1]
- Data.HList.HList: listAsHList' :: (Applicative f, Choice p, HList2List l e) => p (HList l) (f (HList l)) -> p [e] (f [e])
+ Data.HList.HList: listAsHList' :: (HList2List l e, Choice p, Applicative f) => p HList l f HList l -> p [e] f [e]
- Data.HList.HList: type HMapOut f l e = HFoldr (Mapcar f) [e] l [e]
+ Data.HList.HList: type HMapOut f l e = (HFoldr (Mapcar f) [e] l [e])
- Data.HList.HListPrelude: class HExtend e l where type family HExtendR e l
+ Data.HList.HListPrelude: class HExtend e l where {
- Data.HList.HListPrelude: class SameLengths '[x, y, xy] => HUnzip (r :: [*] -> *) x y xy | x y -> xy, xy -> x y
+ Data.HList.HListPrelude: class SameLengths [x, y, xy] => HUnzip (r :: [*] -> *) x y xy | x y -> xy, xy -> x y
- Data.HList.HListPrelude: emptyProxy :: Proxy [*] ([] *)
+ Data.HList.HListPrelude: emptyProxy :: Proxy [*] [] *
- Data.HList.HOccurs: class HOccurs' e l
+ Data.HList.HOccurs: class HOccurs' e l (l0 :: [*])
- Data.HList.HOccurs: hOccurs' :: HOccurs' e l => HList l -> e
+ Data.HList.HOccurs: hOccurs' :: HOccurs' e l l0 => Proxy l0 -> HList l -> e
- Data.HList.HOccurs: hOccursFst :: HOccurrence e l (e : l') => HList l -> e
+ Data.HList.HOccurs: hOccursFst :: forall e l l'. HOccurrence e l (e : l') => HList l -> e
- Data.HList.HOccurs: hOccursMany1 :: (HOccurrence e l (e : l'), HOccursMany e l') => HList l -> (e, [e])
+ Data.HList.HOccurs: hOccursMany1 :: forall e l l'. (HOccurrence e l (e : l'), HOccursMany e l') => HList l -> (e, [e])
- Data.HList.HOccurs: hOccursOpt :: (HOccurrence e l l', HOccursOpt' e l') => HList l -> Maybe e
+ Data.HList.HOccurs: hOccursOpt :: forall e l l'. (HOccurrence e l l', HOccursOpt' e l') => HList l -> Maybe e
- Data.HList.HOccurs: hOccursRest :: (HDeleteAtLabel * r l v v', HOccurs l (r v)) => r v -> (l, r v')
+ Data.HList.HOccurs: hOccursRest :: (HDeleteAtLabel * r l v v', HOccurs l r v) => r v -> (l, r v')
- Data.HList.HSort: hMerge1 :: (HCond t2 x y t1, HCond t2 y x t) => Proxy Bool t2 -> y -> x -> (t, t1)
+ Data.HList.HSort: hMerge1 :: (HCond t x y b, HCond t y x a) => Proxy Bool t -> y -> x -> (a, b)
- Data.HList.HTypeIndexed: hDeleteAt :: (HType2HNat * e l n, HDeleteAtHNat n l) => proxy1 e -> HList l -> HList (HDeleteAtHNatR n l)
+ Data.HList.HTypeIndexed: hDeleteAt :: (HType2HNat * e l n, HDeleteAtHNat n l) => proxy1 e -> HList l -> HList HDeleteAtHNatR n l
- Data.HList.HTypeIndexed: hProjectBy :: (Apply (FHUProj True ns) (hlist l, Proxy HNat HZero), HTypes2HNats [*] k es l ns, HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (hlist l, Proxy HNat HZero)) z) => Proxy [*] es -> hlist l -> HList z
+ Data.HList.HTypeIndexed: hProjectBy :: (HTypes2HNats [*] k es l ns, Apply FHUProj True ns (hlist l, Proxy HNat HZero), HUnfoldFD FHUProj True ns ApplyR FHUProj True ns (hlist l, Proxy HNat HZero) z) => Proxy [*] es -> hlist l -> HList z
- Data.HList.HTypeIndexed: hSplitBy :: (Apply (FHUProj False ns) (hlist l, Proxy HNat HZero), Apply (FHUProj True ns) (hlist l, Proxy HNat HZero), HTypes2HNats [*] k es l ns, HUnfoldFD (FHUProj False ns) (ApplyR (FHUProj False ns) (hlist l, Proxy HNat HZero)) z1, HUnfoldFD (FHUProj True ns) (ApplyR (FHUProj True ns) (hlist l, Proxy HNat HZero)) z) => Proxy [*] es -> hlist l -> (HList z, HList z1)
+ Data.HList.HTypeIndexed: hSplitBy :: (HTypes2HNats [*] k es l ns, HUnfoldFD FHUProj True ns ApplyR FHUProj True ns (hlist l, Proxy HNat HZero) z1, HUnfoldFD FHUProj False ns ApplyR FHUProj False ns (hlist l, Proxy HNat HZero) z2, Apply FHUProj True ns (hlist l, Proxy HNat HZero), Apply FHUProj False ns (hlist l, Proxy HNat HZero)) => Proxy [*] es -> hlist l -> (HList z1, HList z2)
- Data.HList.HTypeIndexed: hUpdateAt :: (HType2HNat * e l n, HUpdateAtHNat n e l) => e -> HList l -> HList (HUpdateAtHNatR n e l)
+ Data.HList.HTypeIndexed: hUpdateAt :: (HType2HNat * e l n, HUpdateAtHNat' n e l l) => e -> HList l -> HList HUpdateAtHNatR n e l
- Data.HList.HZip: class HZipR (MapFst z) (MapSnd z) ~ z => HUnZip z where type family MapFst z :: [*] type family MapSnd z :: [*]
+ Data.HList.HZip: class HZipR (MapFst z) (MapSnd z) ~ z => HUnZip z where {
- Data.HList.HZip: hTranspose :: (SameLength' * * (HReplicateR * n ()) a, HLengthEq2 HNat a n, HLengthEq1 HNat a n, HReplicateFD n (HList ([] *)) es, HFoldr HZipF (HList es) l (HList b), HZip3 a b c) => HList ((:) * (HList a) l) -> HList c
+ Data.HList.HZip: hTranspose :: (HLengthEq2 HNat a n, HLengthEq1 HNat a n, SameLength' * * HReplicateR * n () a, HReplicateFD n HList [] * es, HFoldr HZipF HList es l HList b, HZip3 a b c) => HList (:) * HList a l -> HList c
- Data.HList.Keyword: recToKW :: (HMapCxt HList TaggedToKW a b, HConcat b) => Record a -> HList (HConcatR b)
+ Data.HList.Keyword: recToKW :: forall a b. (HMapCxt HList TaggedToKW a b, HConcat b) => Record a -> HList (HConcatR b)
- Data.HList.Labelable: (.==.) :: ToSym label l => label -> v -> Tagged Symbol l v
+ Data.HList.Labelable: (.==.) :: EnsureLabel x Label k l => x -> v -> Tagged k l v
- Data.HList.Labelable: class SameLength s t => Labelable (x :: k) (r :: [*] -> *) s t a b | x s -> a, x t -> b, x s b -> t, x t a -> s where type family LabelableTy r :: LabeledOpticType
+ Data.HList.Labelable: class SameLength s t => Labelable (x :: k) (r :: [*] -> *) s t a b | x s -> a, x t -> b, x s b -> t, x t a -> s where {
- Data.HList.Labelable: projected' :: (LabeledOpticP (LabelableTy r) p, LabeledOpticF (LabelableTy r) f, Projected r s s b b) => p (r b) (f (r b)) -> p (r s) (f (r s))
+ Data.HList.Labelable: projected' :: (Projected r t t b b, LabeledOpticF LabelableTy r f, LabeledOpticP LabelableTy r p) => p r b f r b -> p r t f r t
- Data.HList.Labelable: toLabel :: ToSym label s => label -> Label s
+ Data.HList.Labelable: toLabel :: EnsureLabel x y => x -> y
- Data.HList.Labelable: type LabelableTIPCxt x s t a b = (s ~ t, a ~ b, x ~ a, HLens x TIP s t a b)
+ Data.HList.Labelable: type LabelableTIPCxt x s t a b = (s ~ t, a ~ b, Label x ~ Label a, HLens x TIP s t a b)
- Data.HList.Record: (.@.) :: (SameLength' * * r r', SameLength' * * r' r, HUpdateAtLabel k record l v r r') => Tagged k l v -> record r -> record r'
+ Data.HList.Record: (.@.) :: (SameLength' * * r' r, SameLength' * * r r', HUpdateAtLabel k record l v r r') => Tagged k l v -> record r -> record r'
- Data.HList.Record: class SameLength r (RecordValuesR r) => RecordValues (r :: [*]) where type family RecordValuesR r :: [*]
+ Data.HList.Record: class SameLength r (RecordValuesR r) => RecordValues (r :: [*]) where {
- Data.HList.Record: hListRecord :: (Functor f, Profunctor p, HAllTaggedLV r, HLabelSet [*] (LabelsOf r)) => p (Record r) (f (Record t)) -> p (HList r) (f (HList t))
+ Data.HList.Record: hListRecord :: (HAllTaggedLV r1, HLabelSet [*] LabelsOf r1, Functor f, Profunctor p) => p Record r1 f Record r2 -> p HList r1 f HList r2
- Data.HList.Record: hListRecord' :: (Functor f, Profunctor p) => p (Record r) (f (Record r)) -> p (HList r) (f (HList r))
+ Data.HList.Record: hListRecord' :: (Profunctor p, Functor f, HLabelSet [*] LabelsOf r, HAllTaggedLV r) => p Record r f Record r -> p HList r f HList r
- Data.HList.Record: hMapR :: (SameLength' * * x y, SameLength' * * y x, HMapAux HList (HFmap f) x y) => f -> Record x -> Record y
+ Data.HList.Record: hMapR :: (HMapAux HList HFmap f x y, SameLength' * * y x, SameLength' * * x y) => f -> Record x -> Record y
- Data.HList.Record: hProjectByLabels' :: (HAllTaggedLV r, SameLength' * * r l, SameLength' * * r (LabelsOf l), SameLength' * * l r, SameLength' * * (LabelsOf l) r, HRearrange3 (LabelsOf l) r l, H2ProjectByLabels (LabelsOf l) t r b, HLabelSet [*] (LabelsOf l), HLabelSet [*] (LabelsOf r)) => Record t -> Record l
+ Data.HList.Record: hProjectByLabels' :: (H2ProjectByLabels LabelsOf l t r b, HAllTaggedLV r, HLabelSet [*] LabelsOf r, HLabelSet [*] LabelsOf l, HRearrange3 LabelsOf l r l, SameLength' * * LabelsOf l r, SameLength' * * r LabelsOf l, SameLength' * * r l, SameLength' * * l r) => Record t -> Record l
- Data.HList.Record: hRearrange' :: (SameLength' * * r l, SameLength' * * r (LabelsOf l), SameLength' * * l r, SameLength' * * (LabelsOf l) r, HRearrange3 (LabelsOf l) r l, HLabelSet [*] (LabelsOf l)) => Record r -> Record l
+ Data.HList.Record: hRearrange' :: (SameLength' * * l r, SameLength' * * r l, SameLength' * * r LabelsOf l, SameLength' * * LabelsOf l r, HRearrange3 LabelsOf l r l, HLabelSet [*] LabelsOf l) => Record r -> Record l
- Data.HList.Record: hRenameLabel :: (HDeleteAtLabel k r l v v', HExtend (Tagged k1 l1 v1) (r v'), HasField k l (r v) v1) => Label k l -> Label k1 l1 -> r v -> HExtendR (Tagged k1 l1 v1) (r v')
+ Data.HList.Record: hRenameLabel :: (HExtend Tagged k2 l2 v2 r v', HasField k1 l1 r v1 v2, HDeleteAtLabel k1 r l1 v1 v') => Label k1 l1 -> Label k2 l2 -> r v1 -> HExtendR Tagged k2 l2 v2 r v'
- Data.HList.Record: hUnzipRecord2 :: (HAllTaggedLV x, HAllTaggedLV x1, SameLabels [*] [*] x y, SameLabels [*] [*] x1 y, SameLength' * * x y, SameLength' * * x1 y, SameLength' * * y x, SameLength' * * y x1, HZipList (RecordValuesR x) (RecordValuesR x1) (RecordValuesR y), HMapAux HList TaggedFn (RecordValuesR x) x, HMapAux HList TaggedFn (RecordValuesR x1) x1, RecordValues x, RecordValues x1, RecordValues y) => Record y -> (Record x, Record x1)
+ Data.HList.Record: hUnzipRecord2 :: (SameLength' * * y x2, SameLength' * * y x1, SameLength' * * x1 y, SameLength' * * x2 y, RecordValues x1, RecordValues y, RecordValues x2, HMapAux HList TaggedFn RecordValuesR x1 x1, HMapAux HList TaggedFn RecordValuesR x2 x2, HZipList RecordValuesR x2 RecordValuesR x1 RecordValuesR y, HAllTaggedLV x2, HAllTaggedLV x1, SameLabels [*] [*] x2 y, SameLabels [*] [*] x1 y) => Record y -> (Record x2, Record x1)
- Data.HList.Record: hZipRecord2 :: (HAllTaggedLV x, SameLabels [*] [*] x y, SameLabels [*] [*] x y1, SameLength' * * x y, SameLength' * * x y1, SameLength' * * y x, SameLength' * * y1 x, HZipList (RecordValuesR y1) (RecordValuesR y) (RecordValuesR x), HMapAux HList TaggedFn (RecordValuesR x) x, RecordValues x, RecordValues y, RecordValues y1) => Record y1 -> Record y -> Record x
+ Data.HList.Record: hZipRecord2 :: (SameLength' * * y1 x, SameLength' * * y2 x, SameLength' * * x y2, SameLength' * * x y1, RecordValues y2, RecordValues y1, RecordValues x, HZipList RecordValuesR y1 RecordValuesR y2 RecordValuesR x, HMapAux HList TaggedFn RecordValuesR x x, HAllTaggedLV x, SameLabels [*] [*] x y2, SameLabels [*] [*] x y1) => Record y1 -> Record y2 -> Record x
- Data.HList.Record: rearranged' :: (Functor f, Profunctor p, Rearranged k r s s b b) => p (r b) (f (r b)) -> p (r s) (f (r s))
+ Data.HList.Record: rearranged' :: (Functor f, Profunctor p, Rearranged k r t t b b) => p r b f r b -> p r t f r t
- Data.HList.Record: relabeled :: (Relabeled r, HMapTaggedFn (RecordValuesR s) a, HMapTaggedFn (RecordValuesR b) t, SameLengths '[s, a, t, b], RecordValuesR t ~ RecordValuesR b, RecordValuesR s ~ RecordValuesR a, RecordValues b, RecordValues s, Profunctor p, Functor f) => r a `p` f (r b) -> r s `p` f (r t)
+ Data.HList.Record: relabeled :: forall p f s t a b. (Relabeled r, HMapTaggedFn (RecordValuesR s) a, HMapTaggedFn (RecordValuesR b) t, SameLengths '[s, a, t, b], RecordValuesR t ~ RecordValuesR b, RecordValuesR s ~ RecordValuesR a, RecordValues b, RecordValues s, Profunctor p, Functor f) => r a `p` f (r b) -> r s `p` f (r t)
- Data.HList.Record: relabeled' :: (Functor f, Profunctor p, SameLength' * * s a, SameLength' * * s b, SameLength' * * s (RecordValuesR b), SameLength' * * a s, SameLength' * * a (RecordValuesR s), SameLength' * * b s, SameLength' * * (RecordValuesR b) s, SameLength' * * (RecordValuesR s) a, HMapAux HList TaggedFn (RecordValuesR b) s, HMapAux HList TaggedFn (RecordValuesR s) a, RecordValues s, RecordValues a, RecordValues b, Relabeled r, (~) [*] (RecordValuesR s) (RecordValuesR a), (~) [*] (RecordValuesR s) (RecordValuesR b)) => p (r a) (f (r b)) -> p (r s) (f (r s))
+ Data.HList.Record: relabeled' :: ((~#) [*] [*] RecordValuesR t RecordValuesR b, Functor f, Profunctor p, SameLength' * * b t, SameLength' * * b RecordValuesR t, SameLength' * * t b, SameLength' * * t RecordValuesR b, SameLength' * * RecordValuesR b t, SameLength' * * RecordValuesR t b, RecordValues t, RecordValues b, HMapAux HList TaggedFn RecordValuesR b t, HMapAux HList TaggedFn RecordValuesR t b, Relabeled r) => p r b f r b -> p r t f r t
- Data.HList.Record: unlabeled0 :: (Functor f, Profunctor p, SameLabels [*] [*] r y, HMapAux HList TaggedFn (RecordValuesR y) y, RecordValues y, RecordValues r) => p (HList (RecordValuesR r)) (f (HList (RecordValuesR y))) -> p (Record r) (f (Record y))
+ Data.HList.Record: unlabeled0 :: (RecordValues y, RecordValues x, HMapAux HList TaggedFn RecordValuesR y y, SameLabels [*] [*] x y, Profunctor p, Functor f) => p HList RecordValuesR x f HList RecordValuesR y -> p Record x f Record y
- Data.HList.RecordU: bad1 :: Record '[Tagged "x" Double, Tagged "y" Double]
+ Data.HList.RecordU: bad1 :: Record [Tagged "x" Double, Tagged "y" Double]
- Data.HList.RecordU: class RecordUSCxt (x :: [*]) (u :: [*]) | x -> u, u -> x where recordUSToHList (RecordUS x) = unsafeCoerce x hListToRecordUS x = RecordUS (unsafeCoerce x)
+ Data.HList.RecordU: class RecordUSCxt (x :: [*]) (u :: [*]) | x -> u, u -> x
- Data.HList.RecordU: recordToRecordUS :: (HMapCxt HList UnboxF g u, HMapUnboxF g u, HGroupBy EqTagValue x g, RecordUSCxt x u) => Record x -> RecordUS x
+ Data.HList.RecordU: recordToRecordUS :: forall x g u. (HMapCxt HList UnboxF g u, HMapUnboxF g u, HGroupBy EqTagValue x g, RecordUSCxt x u) => Record x -> RecordUS x
- Data.HList.RecordU: recordUS :: (Functor f, Profunctor p, HGroupBy * EqTagValue x g, HGroupBy * EqTagValue x1 g1, HMapUnboxF g u, HMapUnboxF g1 u1) => p (RecordUS x) (f (RecordUS x1)) -> p (HList u) (f (HList u1))
+ Data.HList.RecordU: recordUS :: (HMapUnboxF g2 u2, HMapUnboxF g1 u1, HGroupBy * EqTagValue x2 g2, HGroupBy * EqTagValue x1 g1, Functor f, Profunctor p) => p RecordUS x1 f RecordUS x2 -> p HList u1 f HList u2
- Data.HList.RecordU: recordUS' :: (Functor f, Profunctor p, HGroupBy * EqTagValue x g, HMapUnboxF g u) => p (RecordUS x) (f (RecordUS x)) -> p (HList u) (f (HList u))
+ Data.HList.RecordU: recordUS' :: (Profunctor p, Functor f, HGroupBy * EqTagValue x g, HMapUnboxF g u) => p RecordUS x f RecordUS x -> p HList u f HList u
- Data.HList.RecordU: recordUSToRecord :: (HConcatFD g x, HMapCxt HList BoxF u g, HMapUnboxF g u, RecordUSCxt x u) => RecordUS x -> Record x
+ Data.HList.RecordU: recordUSToRecord :: forall u g x. (HConcatFD g x, HMapCxt HList BoxF u g, HMapUnboxF g u, RecordUSCxt x u) => RecordUS x -> Record x
- Data.HList.RecordU: type Bad = '[Tagged "x" Double, Tagged "i" Int, Tagged "y" Double, Tagged "j" Int]
+ Data.HList.RecordU: type Bad = [Tagged "x" Double, Tagged "i" Int, Tagged "y" Double, Tagged "j" Int]
- Data.HList.RecordU: unboxed :: (Profunctor p, Functor f, RecordToRecordU x, RecordUToRecord y) => RecordU x `p` f (RecordU y) -> Record x `p` f (Record y)
+ Data.HList.RecordU: unboxed :: forall x y f p. (Profunctor p, Functor f, RecordToRecordU x, RecordUToRecord y) => RecordU x `p` f (RecordU y) -> Record x `p` f (Record y)
- Data.HList.RecordU: unboxed' :: (Functor f, KnownNat (HNat2Nat n), IArray UArray (GetElemTy x), Profunctor p, SameLength' * * (HReplicateR * n ()) x, HLengthEq2 HNat x n, HLengthEq1 HNat x n, HList2List (RecordValuesR x) (GetElemTy x), HMapAux HList TaggedFn (RecordValuesR x) x, RecordValues x) => p (RecordU x) (f (RecordU x)) -> p (Record x) (f (Record x))
+ Data.HList.RecordU: unboxed' :: (HMapAux HList TaggedFn RecordValuesR y y, SameLength' * * HReplicateR * n () y, IArray UArray GetElemTy y, HLengthEq2 HNat y n, HLengthEq1 HNat y n, KnownNat HNat2Nat n, HList2List RecordValuesR y GetElemTy y, RecordValues y, Functor f, Profunctor p) => p RecordU y f RecordU y -> p Record y f Record y
- Data.HList.RecordU: unboxedS :: (Functor f, Profunctor p, SameLength' * * u g, SameLength' * * u1 g1, SameLength' * * g u, SameLength' * * g1 u1, HGroupBy * EqTagValue x g, HGroupBy * EqTagValue x1 g1, HMapAux HList BoxF u1 g1, HMapAux HList UnboxF g u, HConcatFD g1 x1, HMapUnboxF g u, HMapUnboxF g1 u1) => p (RecordUS x) (f (RecordUS x1)) -> p (Record x) (f (Record x1))
+ Data.HList.RecordU: unboxedS :: (HMapAux HList BoxF u1 g1, HMapAux HList UnboxF g2 u2, SameLength' * * g1 u1, SameLength' * * u1 g1, SameLength' * * g2 u2, SameLength' * * u2 g2, HConcatFD g1 x1, Functor f, Profunctor p, HGroupBy * EqTagValue x2 g2, HGroupBy * EqTagValue x1 g1, HMapUnboxF g2 u2, HMapUnboxF g1 u1) => p RecordUS x2 f RecordUS x1 -> p Record x2 f Record x1
- Data.HList.RecordU: unboxedS' :: (Functor f, Profunctor p, SameLength' * * u g, SameLength' * * g u, HGroupBy * EqTagValue x g, HMapAux HList BoxF u g, HMapAux HList UnboxF g u, HConcatFD g x, HMapUnboxF g u) => p (RecordUS x) (f (RecordUS x)) -> p (Record x) (f (Record x))
+ Data.HList.RecordU: unboxedS' :: (HMapAux HList UnboxF g u, HMapAux HList BoxF u g, HGroupBy * EqTagValue x g, Profunctor p, Functor f, HConcatFD g x, SameLength' * * u g, SameLength' * * g u, HMapUnboxF g u) => p RecordUS x f RecordUS x -> p Record x f Record x
- Data.HList.TIC: mkTIC :: (KnownNat (HNat2Nat n), HAllTaggedLV l, HFind1 * i (UnLabel * i (LabelsOf l)) n, HasField * i (Record l) i, HLabelSet [*] (LabelsOf l), HAllTaggedEq l) => i -> TIC l
+ Data.HList.TIC: mkTIC :: (HAllTaggedEq l, HLabelSet [*] LabelsOf l, HAllTaggedLV l, KnownNat HNat2Nat n, HasField * i Record l i, HFind1 * i UnLabel * i LabelsOf l UnLabel * i LabelsOf l n) => i -> TIC l
- Data.HList.TIC: mkTIC' :: (HTypeIndexed l, MkVariant i i l) => i -> proxy l -> TIC l
+ Data.HList.TIC: mkTIC' :: forall i l proxy. (HTypeIndexed l, MkVariant i i l) => i -> proxy l -> TIC l
- Data.HList.TIC: mkTIC1 :: MkVariant i i '[Tagged i i] => i -> TIC '[Tagged i i]
+ Data.HList.TIC: mkTIC1 :: forall i. MkVariant i i '[Tagged i i] => i -> TIC '[Tagged i i]
- Data.HList.TIC: ticPrism' :: (HPrism a s t a b, a ~ b, s ~ t) => (forall f p. (Applicative f, Choice p) => (a `p` f b) -> (TIC s `p` f (TIC t)))
+ Data.HList.TIC: ticPrism' :: forall s t a b. (HPrism a s t a b, a ~ b, s ~ t) => (forall f p. (Applicative f, Choice p) => (a `p` f b) -> (TIC s `p` f (TIC t)))
- Data.HList.TIC: ticVariant :: (Functor f, Profunctor p) => p (Variant t) (f (Variant l)) -> p (TIC t) (f (TIC l))
+ Data.HList.TIC: ticVariant :: (Functor f, Profunctor p) => p Variant l1 f Variant l2 -> p TIC l1 f TIC l2
- Data.HList.TIC: ticVariant' :: (Functor f, Profunctor p) => p (Variant t) (f (Variant t)) -> p (TIC t) (f (TIC t))
+ Data.HList.TIC: ticVariant' :: (Profunctor p, Functor f) => p Variant l f Variant l -> p TIC l f TIC l
- Data.HList.TIC: typeIndexed :: (TypeIndexed r tr, TypeIndexedCxt s t a b, Profunctor p, Functor f) => p (tr (TagR a)) (f (tr (TagR b))) -> p (r s) (f (r t))
+ Data.HList.TIC: typeIndexed :: forall p f s t a b. (TypeIndexed r tr, TypeIndexedCxt s t a b, Profunctor p, Functor f) => p (tr (TagR a)) (f (tr (TagR b))) -> p (r s) (f (r t))
- Data.HList.TIC: typeIndexed' :: (Functor f, Profunctor p, HAllTaggedLV s, SameLabels [*] [*] s s, SameLength' * * s s, SameLength' * * (RecordValuesR s) (RecordValuesR s), HMapAux HList TaggedFn (RecordValuesR s) s, RecordValues s, HLabelSet [*] (LabelsOf s), TagUntagFD (RecordValuesR s) (TagR (RecordValuesR s)), TypeIndexed r tr, Coercible [*] (TagR (RecordValuesR s)) s) => p (tr (TagR (RecordValuesR s))) (f (tr (TagR (RecordValuesR s)))) -> p (r s) (f (r s))
+ Data.HList.TIC: typeIndexed' :: ((~#) [*] [*] RecordValuesR TagR b b, Functor f, Profunctor p, TagUntagFD b TagR b, HLabelSet [*] LabelsOf TagR b, HAllTaggedLV TagR b, SameLength' * * b b, SameLength' * * TagR b TagR b, SameLabels [*] [*] TagR b TagR b, RecordValues TagR b, HMapAux HList TaggedFn b TagR b, TypeIndexed r tr) => p tr TagR b f tr TagR b -> p r TagR b f r TagR b
- Data.HList.TIP: hUnzipTIP :: (HAllTaggedLV l1, HAllTaggedLV l2, HZipList a a1 l, HLabelSet [*] (LabelsOf l1), HLabelSet [*] (LabelsOf l2), TagUntagFD l ta, TagUntagFD a l1, TagUntagFD a1 l2, HAllTaggedEq l1, HAllTaggedEq l2) => TIP ta -> (TIP l1, TIP l2)
+ Data.HList.TIP: hUnzipTIP :: (TagUntagFD a2 l3, TagUntagFD a1 l2, TagUntagFD l1 ta, HAllTaggedLV l3, HAllTaggedLV l2, HLabelSet [*] LabelsOf l3, HLabelSet [*] LabelsOf l2, HAllTaggedEq l3, HAllTaggedEq l2, HZipList a1 a2 l1) => TIP ta -> (TIP l2, TIP l3)
- Data.HList.TIP: hZipTIP :: (HZipList x y a, TagUntagFD a l, TagUntagFD x ta, TagUntagFD y ta1) => TIP ta -> TIP ta1 -> TIP l
+ Data.HList.TIP: hZipTIP :: (TagUntagFD y ta2, TagUntagFD x ta1, TagUntagFD a l, HZipList x y a) => TIP ta1 -> TIP ta2 -> TIP l
- Data.HList.TIP: onRecord :: (HAllTaggedLV l, HLabelSet [*] (LabelsOf l), HAllTaggedEq l) => (Record r -> Record l) -> TIP r -> TIP l
+ Data.HList.TIP: onRecord :: (HAllTaggedLV l, HLabelSet [*] LabelsOf l, HAllTaggedEq l) => (Record r -> Record l) -> TIP r -> TIP l
- Data.HList.TIP: tipHList :: (Functor f, Profunctor p, TagUntagFD a ta, TagUntagFD a1 l) => p (HList a) (f (HList a1)) -> p (TIP ta) (f (TIP l))
+ Data.HList.TIP: tipHList :: (TagUntagFD a2 l, TagUntagFD a1 ta, Functor f, Profunctor p) => p HList a1 f HList a2 -> p TIP ta f TIP l
- Data.HList.TIP: tipHList' :: (Functor f, Profunctor p, TagUntagFD a ta) => p (HList a) (f (HList a)) -> p (TIP ta) (f (TIP ta))
+ Data.HList.TIP: tipHList' :: (Profunctor p, Functor f, TagUntagFD a l) => p HList a f HList a -> p TIP l f TIP l
- Data.HList.TIP: tipRecord :: (Functor f, Profunctor p) => p (Record r) (f (Record l)) -> p (TIP r) (f (TIP l))
+ Data.HList.TIP: tipRecord :: (Functor f, Profunctor p) => p Record r f Record l -> p TIP r f TIP l
- Data.HList.TIP: tipRecord' :: (Functor f, Profunctor p) => p (Record r) (f (Record r)) -> p (TIP r) (f (TIP r))
+ Data.HList.TIP: tipRecord' :: (Profunctor p, Functor f) => p Record l f Record l -> p TIP l f TIP l
- Data.HList.TIP: tipyLens :: (Functor f, HAllTaggedLV s, HAllTaggedLV t, SameLabels [*] [*] s t, SameLength' * * s t, SameLength' * * t s, HUpdateAtLabel2 * a a s t, HUpdateAtLabel2 * a a t s, HasField * a (Record s) a, HasField * a (Record t) a, HLabelSet [*] (LabelsOf t), HLabelSet [*] (LabelsOf s), HAllTaggedEq s, HAllTaggedEq t) => (a -> f a) -> TIP s -> f (TIP t)
+ Data.HList.TIP: tipyLens :: (Functor f, HAppendList l1 (:) * Tagged * a2 a2 xs2, HAllTaggedLV HAppendListR * l1 (:) * Tagged * a2 a2 xs2, HLabelSet [*] LabelsOf HAppendListR * l1 (:) * Tagged * a2 a2 xs2, HAllTaggedEq HAppendListR * l1 (:) * Tagged * a2 a2 xs2, HFind2 * b Label * a1 LabelsOf xs1 (:) * Label * x LabelsOf xs1 n, HEq * Label * a1 Label * x b, HLengthEq2 HNat l1 n, HLengthEq1 HNat l1 n, SameLength' * * HReplicateR * n () l1, HAppendList1 * l1 (:) * Tagged * a1 a1 xs2 (:) * Tagged * x x xs1, HSplitAt1 [] * n (:) * Tagged * x x xs1 l1 (:) * Tagged * a1 a1 xs2) => (a1 -> f a2) -> TIP (:) * Tagged * x x xs1 -> f TIP HAppendListR * l1 (:) * Tagged * a2 a2 xs2
- Data.HList.TIP: tipyLens' :: (Functor f, HAllTaggedLV a, SameLabels [*] [*] a a, SameLength' * * a a, HUpdateAtLabel2 * b b a a, HasField * b (Record a) b, HLabelSet [*] (LabelsOf a), HAllTaggedEq a) => (b -> f b) -> TIP a -> f (TIP a)
+ Data.HList.TIP: tipyLens' :: (Functor f, SameLabels [*] [*] t t, SameLength' * * t t, HAllTaggedLV t, HLabelSet [*] LabelsOf t, HAllTaggedEq t, HUpdateAtLabel2 * a a t t, HasField * a Record t a) => (a -> f a) -> TIP t -> f TIP t
- Data.HList.TIP: tipyProject :: (HAllTaggedLV l, H2ProjectByLabels ls t l b, HLabelSet [*] (LabelsOf l), HAllTaggedEq l) => proxy ls -> TIP t -> TIP l
+ Data.HList.TIP: tipyProject :: (H2ProjectByLabels ls t l b, HAllTaggedEq l, HLabelSet [*] LabelsOf l, HAllTaggedLV l) => proxy ls -> TIP t -> TIP l
- Data.HList.TIP: tipyProject2 :: (HAllTaggedLV l, HAllTaggedLV l1, H2ProjectByLabels ls r l l1, HLabelSet [*] (LabelsOf l), HLabelSet [*] (LabelsOf l1), HAllTaggedEq l, HAllTaggedEq l1) => proxy ls -> TIP r -> (TIP l, TIP l1)
+ Data.HList.TIP: tipyProject2 :: (HAllTaggedLV l2, HAllTaggedLV l1, HLabelSet [*] LabelsOf l2, HLabelSet [*] LabelsOf l1, HAllTaggedEq l2, HAllTaggedEq l1, H2ProjectByLabels ls r l1 l2) => proxy ls -> TIP r -> (TIP l1, TIP l2)
- Data.HList.TIP: type UntagTag xs = TagUntagFD (UntagR xs) xs
+ Data.HList.TIP: type UntagTag xs = (TagR (UntagR xs) ~ xs, TagUntagFD (UntagR xs) xs)
- Data.HList.TIPtuple: tipyTuple :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v2 v'1, HDeleteAtLabel * r b v v2, HDeleteAtLabel * r b v1 v', HOccurs a (r v), HOccurs a (r v2), HOccurs b (r v), HOccurs b (r v1)) => r v -> (a, b)
+ Data.HList.TIPtuple: tipyTuple :: (HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v3 v'2, HDeleteAtLabel * r a v2 v'1, HDeleteAtLabel * r a v1 v3, HOccurs b r v1, HOccurs b r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b)
- Data.HList.TIPtuple: tipyTuple3 :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v3 v4, HDeleteAtLabel * r a v6 v'2, HDeleteAtLabel * r b v v5, HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v4 v'1, HDeleteAtLabel * r c v v3, HDeleteAtLabel * r c v2 v', HDeleteAtLabel * r c v5 v6, HOccurs a (r v), HOccurs a (r v3), HOccurs a (r v6), HOccurs b (r v), HOccurs b (r v1), HOccurs b (r v4), HOccurs c (r v), HOccurs c (r v2), HOccurs c (r v5)) => r v -> (a, b, c)
+ Data.HList.TIPtuple: tipyTuple3 :: (HDeleteAtLabel * r b v1 v5, HDeleteAtLabel * r b v7 v'3, HDeleteAtLabel * r b v6 v4, HDeleteAtLabel * r c v5 v3, HDeleteAtLabel * r c v1 v2, HDeleteAtLabel * r c v4 v'2, HDeleteAtLabel * r a v3 v'1, HDeleteAtLabel * r a v2 v7, HDeleteAtLabel * r a v1 v6, HOccurs b r v1, HOccurs b r v7, HOccurs b r v6, HOccurs c r v5, HOccurs c r v1, HOccurs c r v4, HOccurs a r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b, c)
- Data.HList.TIPtuple: tipyTuple4 :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v4 v5, HDeleteAtLabel * r a v8 v9, HDeleteAtLabel * r a v12 v'3, HDeleteAtLabel * r b v v10, HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v5 v6, HDeleteAtLabel * r b v9 v'2, HDeleteAtLabel * r c v v7, HDeleteAtLabel * r c v2 v3, HDeleteAtLabel * r c v6 v'1, HDeleteAtLabel * r c v10 v11, HDeleteAtLabel * r d v v4, HDeleteAtLabel * r d v3 v', HDeleteAtLabel * r d v7 v8, HDeleteAtLabel * r d v11 v12, HOccurs a (r v), HOccurs a (r v4), HOccurs a (r v8), HOccurs a (r v12), HOccurs b (r v), HOccurs b (r v1), HOccurs b (r v5), HOccurs b (r v9), HOccurs c (r v), HOccurs c (r v2), HOccurs c (r v6), HOccurs c (r v10), HOccurs d (r v), HOccurs d (r v3), HOccurs d (r v7), HOccurs d (r v11)) => r v -> (a, b, c, d)
+ Data.HList.TIPtuple: tipyTuple4 :: (HDeleteAtLabel * r b v1 v10, HDeleteAtLabel * r b v13 v'4, HDeleteAtLabel * r b v12 v9, HDeleteAtLabel * r b v11 v8, HDeleteAtLabel * r c v10 v7, HDeleteAtLabel * r c v1 v6, HDeleteAtLabel * r c v9 v'3, HDeleteAtLabel * r c v8 v5, HDeleteAtLabel * r d v7 v4, HDeleteAtLabel * r d v6 v3, HDeleteAtLabel * r d v1 v2, HDeleteAtLabel * r d v5 v'2, HDeleteAtLabel * r a v4 v'1, HDeleteAtLabel * r a v3 v13, HDeleteAtLabel * r a v2 v12, HDeleteAtLabel * r a v1 v11, HOccurs b r v1, HOccurs b r v13, HOccurs b r v12, HOccurs b r v11, HOccurs c r v10, HOccurs c r v1, HOccurs c r v9, HOccurs c r v8, HOccurs d r v7, HOccurs d r v6, HOccurs d r v1, HOccurs d r v5, HOccurs a r v4, HOccurs a r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b, c, d)
- Data.HList.TIPtuple: tipyTuple5 :: (HDeleteAtLabel * r a v v1, HDeleteAtLabel * r a v5 v6, HDeleteAtLabel * r a v10 v11, HDeleteAtLabel * r a v15 v16, HDeleteAtLabel * r a v20 v'4, HDeleteAtLabel * r b v v17, HDeleteAtLabel * r b v1 v2, HDeleteAtLabel * r b v6 v7, HDeleteAtLabel * r b v11 v12, HDeleteAtLabel * r b v16 v'3, HDeleteAtLabel * r c v v13, HDeleteAtLabel * r c v2 v3, HDeleteAtLabel * r c v7 v8, HDeleteAtLabel * r c v12 v'2, HDeleteAtLabel * r c v17 v18, HDeleteAtLabel * r d v v9, HDeleteAtLabel * r d v3 v4, HDeleteAtLabel * r d v8 v'1, HDeleteAtLabel * r d v13 v14, HDeleteAtLabel * r d v18 v19, HDeleteAtLabel * r e v v5, HDeleteAtLabel * r e v4 v', HDeleteAtLabel * r e v9 v10, HDeleteAtLabel * r e v14 v15, HDeleteAtLabel * r e v19 v20, HOccurs a (r v), HOccurs a (r v5), HOccurs a (r v10), HOccurs a (r v15), HOccurs a (r v20), HOccurs b (r v), HOccurs b (r v1), HOccurs b (r v6), HOccurs b (r v11), HOccurs b (r v16), HOccurs c (r v), HOccurs c (r v2), HOccurs c (r v7), HOccurs c (r v12), HOccurs c (r v17), HOccurs d (r v), HOccurs d (r v3), HOccurs d (r v8), HOccurs d (r v13), HOccurs d (r v18), HOccurs e (r v), HOccurs e (r v4), HOccurs e (r v9), HOccurs e (r v14), HOccurs e (r v19)) => r v -> (a, b, c, d, e)
+ Data.HList.TIPtuple: tipyTuple5 :: (HDeleteAtLabel * r b v1 v17, HDeleteAtLabel * r b v21 v'5, HDeleteAtLabel * r b v20 v16, HDeleteAtLabel * r b v19 v15, HDeleteAtLabel * r b v18 v14, HDeleteAtLabel * r c v17 v13, HDeleteAtLabel * r c v1 v12, HDeleteAtLabel * r c v16 v'4, HDeleteAtLabel * r c v15 v11, HDeleteAtLabel * r c v14 v10, HDeleteAtLabel * r d v13 v9, HDeleteAtLabel * r d v12 v8, HDeleteAtLabel * r d v1 v7, HDeleteAtLabel * r d v11 v'3, HDeleteAtLabel * r d v10 v6, HDeleteAtLabel * r e v9 v5, HDeleteAtLabel * r e v8 v4, HDeleteAtLabel * r e v7 v3, HDeleteAtLabel * r e v1 v2, HDeleteAtLabel * r e v6 v'2, HDeleteAtLabel * r a v5 v'1, HDeleteAtLabel * r a v4 v21, HDeleteAtLabel * r a v3 v20, HDeleteAtLabel * r a v2 v19, HDeleteAtLabel * r a v1 v18, HOccurs b r v1, HOccurs b r v21, HOccurs b r v20, HOccurs b r v19, HOccurs b r v18, HOccurs c r v17, HOccurs c r v1, HOccurs c r v16, HOccurs c r v15, HOccurs c r v14, HOccurs d r v13, HOccurs d r v12, HOccurs d r v1, HOccurs d r v11, HOccurs d r v10, HOccurs e r v9, HOccurs e r v8, HOccurs e r v7, HOccurs e r v1, HOccurs e r v6, HOccurs a r v5, HOccurs a r v4, HOccurs a r v3, HOccurs a r v2, HOccurs a r v1) => r v1 -> (a, b, c, d, e)
- Data.HList.Variant: eqVariant :: (SameLength' * * x (HMapOutV_gety x Bool), SameLength' * * (HMapOutV_gety x Bool) x, HMapAux Variant (HFmap UncurryEq) x (HMapOutV_gety x Bool), ZipVariant x1 y x, Unvariant1 Bool b (HMapOutV_gety x Bool) Bool, HAllEqVal (HMapOutV_gety x Bool) b, HAllEqVal ((:) * (Tagged * () Bool) (HMapOutV_gety x Bool)) b) => Variant x1 -> Variant y -> Bool
+ Data.HList.Variant: eqVariant :: (ZipVariant x2 y x1, HAllEqVal (:) * Tagged * () Bool HMapOutV_gety x1 Bool b, HAllEqVal HMapOutV_gety x1 Bool b, Unvariant1 Bool b HMapOutV_gety x1 Bool Bool, HMapAux Variant HFmap UncurryEq x1 HMapOutV_gety x1 Bool, SameLength' * * HMapOutV_gety x1 Bool x1, SameLength' * * x1 HMapOutV_gety x1 Bool) => Variant x2 -> Variant y -> Bool
- Data.HList.Variant: hMapOutV :: (SameLength x y, HMapAux Variant (HFmap f) x y, Unvariant y z, HMapOutV_gety x z ~ y) => f -> Variant x -> z
+ Data.HList.Variant: hMapOutV :: forall x y z f. (SameLength x y, HMapAux Variant (HFmap f) x y, Unvariant y z, HMapOutV_gety x z ~ y) => f -> Variant x -> z
- Data.HList.Variant: hMapV :: (SameLength' * * x y, SameLength' * * y x, HMapAux Variant (HFmap f) x y) => f -> Variant x -> Variant y
+ Data.HList.Variant: hMapV :: (SameLength' * * y x, SameLength' * * x y, HMapAux Variant HFmap f x y) => f -> Variant x -> Variant y
- Data.HList.Variant: hMaybied :: (Applicative f, Choice p, SameLength' * * r x, SameLength' * * x r, HMapAux HList (HFmap HCastF) x r, HFoldr HMaybiedToVariantFs [Variant ([] *)] x [Variant v1], VariantToHMaybied v r, VariantToHMaybied v1 x) => p (Variant v1) (f (Variant v)) -> p (Record x) (f (Record r))
+ Data.HList.Variant: hMaybied :: (Applicative f, Choice p, SameLength' * * x r, SameLength' * * r x, HMapAux HList HFmap HCastF x r, VariantToHMaybied v1 x, VariantToHMaybied v2 r, HFoldr HMaybiedToVariantFs [Variant [] *] x [Variant v1]) => p Variant v1 f Variant v2 -> p Record x f Record r
- Data.HList.Variant: hMaybied' :: (Applicative f, Choice p, SameLength' * * x x, HMapAux HList (HFmap HCastF) x x, HFoldr HMaybiedToVariantFs [Variant ([] *)] x [Variant v], VariantToHMaybied v x) => p (Variant v) (f (Variant v)) -> p (Record x) (f (Record x))
+ Data.HList.Variant: hMaybied' :: (HFoldr HMaybiedToVariantFs [Variant [] *] x [Variant v], VariantToHMaybied v x, HMapAux HList HFmap HCastF x x, SameLength' * * x x, Choice p, Applicative f) => p Variant v f Variant v -> p Record x f Record x
- Data.HList.Variant: mkVariant1 :: Label k l -> e -> Variant ((:) * (Tagged k l e) ([] *))
+ Data.HList.Variant: mkVariant1 :: () => Label k l -> e -> Variant (:) * Tagged k l e [] *
- Data.HList.Variant: unvarianted' :: (Functor f, SameLabels [*] [*] s s, SameLength' * * s s, Unvariant1 Bool b s a, HAllEqVal' ((:) * (Tagged * () a) s), HAllEqVal s b, HAllEqVal ((:) * (Tagged * () a) s) b) => (a -> f a) -> Variant s -> f (Variant s)
+ Data.HList.Variant: unvarianted' :: (Functor f, SameLength' * * t t, SameLabels [*] [*] t t, HAllEqVal (:) * Tagged * () a t b, HAllEqVal t b, HAllEqVal' (:) * Tagged * () a t, Unvariant1 Bool b t a) => (a -> f a) -> Variant t -> f Variant t

Files

ChangeLog view
@@ -1,3 +1,29 @@+19 Feb 2018+0.5.0 Release+Build & pass tests with ghc-7.6 through 8.4.0.20180209++Add Dredge.hs (ghc>=7.8): access nested records/variants given only the last+label along a path++Move toLabel to another class to allow it to return Labels with+kinds other than Symbol.++tipyLens can now change the element type++Add hTake and hDrop++Use TypeError for prettier error messages in ghc-8.0 (still backwards+compatible)++Improve HFind and HUpdateAtHNat error messages by mentioning the whole+record being changed++22 Dec 2015+0.4.2 Release++Depend on base-orphans to avoid multiple definitions of Typeable '[],+Typeable '(:)+ 3 Aug 2015 0.4.1 Release 
Data/HList/CommonMain.hs view
@@ -128,7 +128,8 @@   -- * Conversions between collections  -- $convention the foo' optic has the same type as- -- @Control.Lens.simple . foo@. 'hLens'' is an exception to this rule.+ -- @Control.Lens.simple . foo . Control.Lens.simple@.+ -- 'hLens'' is an exception to this rule.   , TypeIndexed(..)  , typeIndexed'@@ -162,25 +163,39 @@  , Kw(..), recToKW, IsKeyFN, K,  ErrReqdArgNotFound,  ErrUnexpectedKW   -- * Labels- {- | there are three options for now. However, there are-   a couple different styles for the first option here:--   GHC supports type-level strings ('GHC.TypeLits.Symbol'), and these can be-   labels. You can refer to these strings using an unwieldy syntax described-   below. For example if you want to store a value @5@ in a record @rec@-   with a field called @\"x\"@, and then get it out again:+ {- | By labels, we mean either the first argument to 'Tagged' (in the+   type-level lists that are supplied to 'Record', 'RecordU', 'TIP', 'TIC'),+   or the expressions used to specify those types to be able to look up+   the correct value in those collections. -   let rec = ('Label' :: Label \"x\") '.=.' 5 '.*.' 'emptyRecord'+   Nearly all types can be labels. For example: -   rec '.!.' (Label :: Label \"x\")+   @+     r :: Record '[Tagged "x" Int,   -- kind GHC.TypeLits.Symbol +                   Tagged () (),    -- see "Data.HList.Label5"+                   Tagged (Lbl HZero LabelUniverse LabelMember1) () -- Label3+                  ]+     r = 'hBuild' 8 () () -- don't need to use '.=.' / '.==.' and '.*.'+                           -- if we have a type signature above+   @+ +    we could define these variables -   To avoid that pain, you can have a definition @x = Label :: Label "x"@.-   and just use @x@ instead of repeating @Label :: Label \"x\"@ so that-   a lookup becomes:+   @+    xLabel = Label :: Label \"x\" -- 'makeLabels6' ["x"] would define x with the same RHS+    xLens  = hLens' xLabel        -- 'makeLabelable' "x" would define x with the same RHS+   @ -   > rec .!. x+   to access the @8@ given above: -   'makeLabels6' automates definitions like @x = Label :: Label \"x\"@.+   @+    r '.!.' xLabel+    r  ^.   xLens   -- alternatively Control.Lens.view+    r  ^. `x        -- with HListPP is used (not in ghci),+                    -- which avoids the issue of conflicting+                    -- definitions of x, which mean the same+                    -- thing+   @   -}  -- $label6demo@@ -188,6 +203,14 @@  , module Data.HList.Labelable  -- $labelable + -- ** "Data.HList.Dredge"+ -- *** lenses+ , dredge, dredge'+ , dredgeND, dredgeND'+ , dredgeTI'+ -- *** plain lookup+ , hLookupByLabelDredge, HasFieldPath+  -- ** namespaced labels  , module Data.HList.Label3 @@ -216,7 +239,6 @@ import Data.HList.HOccurs import Data.HList.HTypeIndexed import Data.HList.Record--- import Data.HList.RecordU -- import Data.HList.RecordOrd import Data.HList.HList hiding (append',                                 hAppend',@@ -250,6 +272,8 @@ import Data.HList.Keyword import Data.HList.RecordPuns import Data.HList.RecordU++import Data.HList.Dredge  {- $label6demo #label6demo# 
Data/HList/Data.hs view
@@ -100,7 +100,9 @@ -- | this data type only exists to have Data instance newtype HListFlat a = HListFlat (HList a) -type DataHListFlatCxt na g a = (HBuild' '[] g,+type DataHListFlatCxt na g a = (+        g ~ FoldRArrow a (HList a),+        HBuild' '[] g,         Typeable (HListFlat a),         TypeablePolyK a,         HFoldl (GfoldlK  C) (C g) a (C (HList a)),@@ -112,8 +114,22 @@             (C (HList a)),          HLengthEq a na,-        HReplicate na ()-        )+        HReplicate na ())+++-- | ghc-8.0.2 can't work out the type g,+-- in the 2nd argument of gfoldl. ghc <= 7.10+-- don't need it.+--+-- in `instance Data (HListFlat '[a,b,c])`+--+-- > g ~ (a -> b -> c -> HList '[a,b,c])+-- > g ~ GetG '[a,b,c] (HList '[a,b,c])+type family FoldRArrow (xs :: [*]) (r :: *)++type instance FoldRArrow '[] r = r+type instance FoldRArrow (x ': xs) r = x -> FoldRArrow xs r +  instance DataHListFlatCxt na g a => Data (HListFlat a) where     gfoldl k z (HListFlat xs) = c3 $
+ Data/HList/Dredge.hs view
@@ -0,0 +1,399 @@+{-# LANGUAGE CPP #-}+#if (__GLASGOW_HASKELL__ < 709)+-- TryCollectionList needs overlap+{-# LANGUAGE OverlappingInstances #-}+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}+#endif+{- | Description: access nested records/variants given only the last label along a path -}+module Data.HList.Dredge where++import Data.HList.Record+import Data.HList.Variant+import Data.HList.HList+import Data.HList.TIP+import Data.HList.TIC+import Data.HList.FakePrelude+import Data.HList.Labelable+import LensDefs (isSimple)+import Data.HList.TypeEqO () -- if this is missing, dredge fails+++#if (__GLASGOW_HASKELL__ == 800)+-- https://ghc.haskell.org/trac/ghc/ticket/13371+toLabelx x = toLabelSym x+#else+toLabelx x = toLabel x+#endif++{- |++Using HListPP syntax for short hand, @dredge `foo@ expands out to+something like @`path . `to . `foo@, with the restriction that+there is only one possible @`path .  `to@ which leads to the+label @foo@.++For example, if we have the following definitions,++> type BVal a = Record '[Tagged "x" a, Tagged "a" Char]+> type R a = Record  [Tagged "a" Int, Tagged "b" (BVal a)]+> type V a = Variant [Tagged "a" Int, Tagged "b" (BVal a)]+> lx = Label :: Label "x"++Then we have:++> dredge `x :: Lens (R a) (R b) a b+> dredge lx :: Lens (R a) (R b) a b++> dredge `x :: Traversal (V a) (V b) a b -- there were only variants along the path we'd get a Prism+> dredge lx :: Traversal (V a) (V b) a b++[@result-type directed operations are supported@]++There are two ways to access a field with tag @a@ in the R type+defined above, but they result in fields with different types+being looked up:++> `a        :: Lens' (R a) Char+> `b . `a   :: Lens' (R a) Int++so provided that the result type is disambiguated by the context,+the following two types can happen++> dredge `a :: Lens' (R a) Char+> dredge `a :: Lens' (R a) Int+++[@TIP & TIC@]++type indexed collections are allowed along those paths, but+as explained in the 'Labelable' instances, only simple optics+(Lens' / Prism' / Traversal' ) are produced. @dredgeTI'@+works better if the target is a TIP or TIC++-}+dredge label = getSAfromOutputOptic $ \ pr pa ->+      hLens'Path (labelPathEndingWithTD pr (toLabelx label) pa)++++getSAfromOutputOptic :: (p a fb -> p rs rft) ~ stab+                => (Proxy (rs :: *) -> Proxy (a :: *) -> stab) -> stab+getSAfromOutputOptic f = f Proxy Proxy+++-- | 'dredge' except a simple (s ~ t, a ~ b) optic is produced+dredge' label = isSimple (dredge label)+++-- | dredgeND (named directed only) is the same as 'dredge', except the+-- result type (@a@) is not used when the label would otherwise+-- be ambiguous. dredgeND might give better type errors, but otherwise+-- there should be no reason to pick it over dredge+dredgeND label = getSAfromOutputOptic $ \ pr _a ->+      hLens'Path (labelPathEndingWith pr (toLabelx label))+++-- | 'dredgeND' except a simple (s ~ t, a ~ b) optic is produced+dredgeND' label = isSimple (dredgeND label)+++{- | The same as dredgeND', except intended for TIP/TICs because+the assumption is made that @l ~ v@ for the @Tagged l v@ elements.+In other words, ticPrism' and 'tipyLens'' could usually+be replaced by++> dredgeTI' :: _ => Label a -> Lens'  (TIP s) a+> dredgeTI' :: _ => Label a -> Prism' (TIC s) a++where we might have @s ~ '[Tagged a a, Tagged b b]@++-}+dredgeTI' label = isSimple lens where+        lens = getSAfromOutputOptic $ \ pr pa ->+            hLens'Path (labelPathEndingWith pr (pa `proxyTypeOf` label))++        proxyTypeOf :: p a -> q a -> Label a+        proxyTypeOf _ _ = Label+++-- | @HSingleton msg xs x@ is like @'[x] ~ xs@ if that constraint can hold,+-- otherwise it is @Fail msg@. See comments on 'Fail' about how its kind+-- varies with ghc version.+class HSingleton (msgAmb :: m) (msgEmpty :: m2) (ns :: [k]) (p :: k) | ns -> p+instance HSingleton m1 m2 '[n] n+instance (Fail m2, Any ~ a) => HSingleton m1 m2 '[] a+instance (Fail m1, Any ~ a) => HSingleton m1 m2 (n1 ': n2 ': n3) a+++-- | @HGuardNonNull msg xs@ is like @when (null xs) (fail msg)@+class HGuardNonNull emptymsg (xs :: [k])++instance Fail msg => HGuardNonNull msg '[]+instance             HGuardNonNull msg (x ': xs)+++-- | @ConsTrue b x xs r@ is like @r = if b then x:xs else xs@+class ConsTrue (b :: Bool) (x :: k) (xs :: [k]) (r :: [k]) | b x xs -> r, r b -> xs, x xs r -> b+instance ConsTrue True x xs (x ': xs)+instance ConsTrue False x xs xs++-- | @FilterLastEq x xs ys ys'@ determines ys' such that it+-- contains all of the @ys !! i@ such that @last (xs !! i) == x@.+-- In other words it is like+--+-- > ys' = [ y |  (xsElt, y) <- zip xs ys, last xsElt == x ]+class FilterLastEq (x :: k) (xs :: [[k]]) (ys :: [m]) (ys' :: [m]) | x xs ys -> ys'+instance (HReverse path (y' ': rest), HEq y y' b, ConsTrue b z r1 r,+          FilterLastEq y xs zs r1) => FilterLastEq y (path ': xs) (z ': zs) r++instance FilterLastEq y '[] '[] '[]++-- | The same as 'FilterLastEq' except @id@ is used instead of @last@+class FilterVEq (v :: *) (vs :: [*]) (ns :: [k]) (ns' :: [k]) | v vs ns -> ns'++instance FilterVEq v '[] '[] '[]++instance+   (HEq v v' b,+    ConsTrue b n ns1 ns2,+    FilterVEq v vs ns ns1)+    => FilterVEq v (v' ': vs) (n ': ns) ns2++-- | like @FilterVEq@, except if there is+class FilterVEq1 (v :: *) (vs :: [*]) (ns :: [k]) (ns' :: [k]) | v vs ns -> ns'+instance (v ~ v') => FilterVEq1 v '[ v' ] ns ns+instance FilterVEq1 v '[] '[] '[]+instance FilterVEq v (a ': b ': c)  ns ns' => FilterVEq1 v (a ': b ': c) ns ns'++-- | @LabelPathEndingWith r l path@+--+-- determines a unique path suitable for 'hLookupByLabelPath'+-- (calling 'Fail' otherwise) through the+-- nested records/variants in r ending with l+class LabelPathEndingWith (r :: *) (l :: k) (path :: [*]) | r l -> path where+    labelPathEndingWith :: proxy r -> Label l -> Label path+    labelPathEndingWith _ _ = Label++instance+   (FieldTree r ns,+    FilterLastEq (Label l) ns ns ns',+    HSingleton (NonUnique' r l) (NamesDontMatch r ns l) ns' path)+    => LabelPathEndingWith r l path+++labelPathEndingWithTD :: forall r l v path+                                vs vs1 ns ns1 ns2.+   (SameLength ns vs,+    SameLength ns1 vs1,+    FieldTree r ns,+    FieldTreeVal r vs,+    FilterLastEq (Label l) ns ns ns1,+    FilterLastEq (Label l) ns vs vs1,+    FilterVEq1 v vs1 ns1 ns2,++    HGuardNonNull (NamesDontMatch r ns l) ns1,++    -- '[path] ~ ns2, plus error reporting if ns2 has >1 or 0 elements+    HSingleton (NonUnique r v l) (TypesDontMatch r ns1 vs1 v) ns2 path)+    => Proxy r -> Label l -> Proxy v -> Label path+labelPathEndingWithTD _ _ _ = Label+++type NamesDontMatch r ns l = ErrShowType r+  :$$: ErrText "has paths"  :<>: ErrShowType ns+  :$$: ErrText "but none which end in the desired label" :<>: ErrShowType l++type NonUnique' r l = ErrText "Path ending in label " :<>: ErrShowType l+  :$$: ErrText "is not unique in " :<>: ErrShowType r++type NonUnique r v l = NonUnique' r l+  :$$: ErrText "also considering the v type " :<>: ErrShowType v++{- | XXX++> let x = 'x'; y = [pun| x |]; z = [pun| y |]+> z & dredge (Label :: Label "x") %~ (succ :: Int -> Int)++Should reference this type error, but for whatever reason it doesn't++-}+type TypesDontMatch r ns1 vs1 v = ErrShowType r+  :$$: ErrText "has potential paths with the right labels" :<>: ErrShowType ns1+  :$$: ErrText "which point at types" :<>: ErrShowType vs1 :<>: ErrText "respectively"+  :$$: ErrText "but none of these match the desired type" :<>: ErrShowType v++-- | see 'hLookupByLabelPath'+hLookupByLabelDredge l r = labelPathEndingWith (toProxy r) l `hLookupByLabelPath` r+  where toProxy :: r x -> Proxy x+        toProxy _ = Proxy++{- | lookup along a path++>>> let v = mkVariant1 Label (mkVariant1 Label 'r') :: Variant '[Tagged "x" (Variant '[Tagged "y" Char])]+>>> let r = hBuild (hBuild 'r') :: Record '[Tagged "x" (Record '[Tagged "y" Char])]+>>> let p = Label :: Label [Label "x", Label "y"]+>>> let lx = Label :: Label "y"++>>> hLookupByLabelPath p v+Just 'r'++>>> hLookupByLabelPath p r+'r'++>>> hLookupByLabelDredge lx v+Just 'r'++>>> hLookupByLabelDredge lx r+'r'++-}+hLookupByLabelPath :: HasFieldPath False ls r v => Label ls -> r -> v+hLookupByLabelPath labels r = hLookupByLabelPath1 hFalse labels r++{- |++> hLens'Path labc == hLens' la . hLens' lb . hLens' lc+>  where+>       la :: Label "a"+>       lb :: Label "b"+>       lc :: Label "c"+>       labc :: Label '["a", "b", "c"]++-}+class LabelablePath (xs :: [*]) apb spt | spt xs -> apb where+    hLens'Path :: Label xs -> apb -> spt++instance (Labelable x r s t a b,+          j ~ (a `p` f b),+          k ~ (r s `p` f (r t)),+          ty ~ LabelableTy r,+          LabeledOpticP ty p,+          LabeledOpticF ty f,+          LabeledOpticTo ty x (->),+          LabelablePath xs i j) => LabelablePath (Label x ': xs) i k where+    hLens'Path _ = (hLens' (Label :: Label x) :: j -> k) . hLens'Path (Label :: Label xs)++instance (x ~ x') => LabelablePath '[] x x' where+    hLens'Path _ = id++class HasFieldPath (needJust :: Bool) (ls :: [*]) r v | needJust ls r -> v where+    -- | use 'hLookupByLabelPath' instead+    hLookupByLabelPath1 :: Proxy needJust -> Label ls -> r -> v++instance HasFieldPath False '[] v v where+    hLookupByLabelPath1 _ _ = id++instance HasFieldPath True '[] v (Maybe v) where+    hLookupByLabelPath1 _ _ = Just++instance (HasField l (Record r) u, HasFieldPath needJust ls u v)+    => HasFieldPath needJust (Label l ': ls) (Record r) v where+     hLookupByLabelPath1 needJust _ = hLookupByLabelPath1 needJust (Label :: Label ls)+                                . hLookupByLabel (Label :: Label l)++instance (HasField l (Variant r) (Maybe u), HasFieldPath True ls u (Maybe v))+    => HasFieldPath needJust (Label l ': ls) (Variant r) (Maybe v) where+     hLookupByLabelPath1 _ _ v = hLookupByLabelPath1 hTrue (Label :: Label ls) =<< hLookupByLabel (Label :: Label l) v++++++{- | @(FieldTree r ns, FieldTreeVal r vs)@++defines ns and vs such that looking up path (ns !! i) in r gives the type+(vs !! i). This is almost @HasFieldPath False (ns !! i) (vs !! i)@, except+there is no additional Maybe when a Variant is encountered along the path+(and we don't have a type level @!!@)+-}+class FieldTreeVal (r :: *) (v :: [*]) | r -> v++class MapFieldTreeVal (r :: *) (ns :: Maybe [*]) (vs :: [*]) | r ns -> vs++instance (TryCollectionList r ns, MapFieldTreeVal r ns v) => FieldTreeVal r v++instance MapFieldTreeVal r Nothing '[]++instance ( MapFieldTreeVal r (Just xs) out2,+           FieldTreeVal v out1,+           (v ': HAppendListR out1 out2) ~ out)+  => MapFieldTreeVal r (Just (Tagged n v ': xs))  out++instance MapFieldTreeVal r (Just '[]) '[]++{- | list all paths through nested records or variants.+An example instance would be++> FieldTree r v++where++> v ~ [[ Label "x",  Label Dat ], '[Label "y"], '[Label "x"] ]+> r ~ Record [ Tagged "x" x, Tagged "y" String ]+>+> x ~ Variant '[ Tagged Dat Char ]++-}+class FieldTree (r :: *) (v :: [[*]]) | r -> v++-- | the only instance+instance (TryCollectionList r ns, MapFieldTree ns vs) => FieldTree r vs+++#if (__GLASGOW_HASKELL__ >= 800)+-- possibly https://ghc.haskell.org/trac/ghc/ticket/13284+-- dredge' x = (isSimple . dredge) x+--     • Overlapping instances for TryCollectionList r0 ns0+--         arising from a use of ‘dredge’+--       Matching instances:+--         instance [overlappable] nothing ~ 'Nothing =>+--                                 TryCollectionList x nothing+--           -- Defined at /home/aavogt/wip/HList/HList/Data/HList/Dredge.hs:340:31+--         ...plus four instances involving out-of-scope types+--         (use -fprint-potential-instances to see them all)+--       (The choice depends on the instantiation of ‘r0, ns0’+--        To pick the first instance above, use IncoherentInstances+--        when compiling the other instance declarations)+--+-- attempt to resolve that with a closed type family++type family TryCollectionListTF (r :: *) :: Maybe [*] where+  TryCollectionListTF (Record r) = Just r+  TryCollectionListTF (Variant r) = Just r+  TryCollectionListTF (TIC r) = Just r+  TryCollectionListTF (TIP r) = Just r+  TryCollectionListTF nothing = Nothing++type TryCollectionList r v = (v ~ TryCollectionListTF r)++#else+-- | try to extract the list applied to the Record or Variant+class TryCollectionList (r :: *) (v :: Maybe [*]) | r -> v++instance {-# OVERLAPPABLE #-} (nothing ~ Nothing) => TryCollectionList x nothing+instance {-# OVERLAPPING  #-} TryCollectionList (Record  r) (Just r)+instance {-# OVERLAPPING  #-} TryCollectionList (Variant r) (Just r)+instance {-# OVERLAPPING  #-} TryCollectionList (TIC r) (Just r)+instance {-# OVERLAPPING  #-} TryCollectionList (TIP r) (Just r)+#endif++class MapFieldTree (ns :: Maybe [*]) (vs :: [[*]]) | ns -> vs++instance MapFieldTree Nothing '[]++-- | recursive case+instance (+    MapFieldTree (Just xs) vs3,+    FieldTree v vs1,+    MapCons (Label n) ('[] ': vs1) vs2,+    HAppendListR vs2 vs3 ~ vs)+    => MapFieldTree (Just (Tagged n v ': xs)) vs++instance MapFieldTree (Just '[]) '[]++-- | MapCons x xs xxs is like  xxs = map (x : ) xs+class MapCons (x :: k) (xs :: [[k]]) (xxs :: [[k]]) | x xs -> xxs+instance MapCons x '[] '[]+instance MapCons x b r => MapCons x (a ': b) ( (x ':  a) ': r)++
Data/HList/FakePrelude.hs view
@@ -10,14 +10,19 @@  module Data.HList.FakePrelude     (module Data.HList.FakePrelude,+     -- * re-exports      module Data.Proxy,      module Data.Tagged,-     Monoid(..)) where+     Monoid(..),+     Any) where  import Data.Proxy import Data.Tagged-import GHC.Prim (Constraint)+import GHC.Exts (Constraint,Any) import GHC.TypeLits+#if __GLASGOW_HASKELL__ >= 800+import qualified GHC.TypeLits as Data.HList.FakePrelude (ErrorMessage((:$$:), (:<>:))) -- XXX check this works?+#endif import Control.Applicative #if NEW_TYPE_EQ import Data.Type.Equality (type (==))@@ -28,7 +33,7 @@ #endif  #if __GLASGOW_HASKELL__ < 709-import Data.Monoid+import Data.Monoid (Monoid(..)) #endif  @@ -285,7 +290,7 @@ -} data HComp g f = HComp g f -- ^ @g . f@ -instance forall f g a b c. (ApplyAB f a b, ApplyAB g b c) => ApplyAB (HComp g f) a c where+instance (ApplyAB f a b, ApplyAB g b c) => ApplyAB (HComp g f) a c where     applyAB ~(HComp g f) x = applyAB g (applyAB f x :: b)  @@ -682,17 +687,54 @@  -- * Error messages --- | A class without instances for explicit failure-class Fail x+{- | A class without instances for explicit failure. +Note that with ghc>=8.0, `x :: TypeError` which is formatted properly.+Otherwise `x` is made of nested (left-associated) promoted tuples.+For example: --- ** Uses of fail--- $note these could be replaced by `'("helpful message", l)`,--- but these look better.-data ExtraField l-data FieldNotFound l+> (x ~ '( '( '("the", Int), "is wrong") ) ) :: ((,) Symbol *, Symbol) +Therefore code that works across ghc-7.6 through ghc-8.0 needs to+use ErrText, ErrShowType, :<>:, :$$: to construct the type x.  -}+class Fail (x :: k) +#if __GLASGOW_HASKELL__ >= 800+-- | use the alias ErrText to prevent conflicts with Data.Text+--+-- GHC.TypeLits.:<>: and GHC.TypeLits.:$$: are re-exported+type ErrText x = GHC.TypeLits.Text x+type ErrShowType x = GHC.TypeLits.ShowType x++-- type Fail = TypeError -- another option+instance TypeError x => Fail x+#else++type ErrText x = x+type ErrShowType x = x+type x :<>: y = '(x,y)+type x :$$: y = '(x,y)+infixl 6 :<>:+infixl 5 :$$:+#endif++-- ** Error messages used elsewhere+type FieldNotFound key collection = ErrText "key" :<>: ErrShowType key+      :$$: ErrText "could not be found in" :<>: ErrShowType collection++type ExcessFieldFound key collection = ErrText "found field" :<>: ErrShowType key+      :$$: ErrText "when it should be absent from" :<>: ErrShowType collection++type HNatIndexTooLarge (nat :: HNat) (r :: [k] -> *) (xs :: [k]) =+      ErrText "0-based index" :<>: ErrShowType (HNat2Nat nat) :<>:+      ErrText "is too large for collection"+            :$$: ErrShowType (r xs)+    -- :$$: ErrText "(length: " :<>: ErrShowType (HNat2Nat (HLength collection)) :<>: ErrText " )"+    -- Data.HList.HList.HLength isn't available here++type ExtraField x = ErrText "extra field" :<>: ErrShowType x++ #if OLD_TYPEABLE type TypeablePolyK a = (() :: Constraint) #else@@ -730,6 +772,7 @@   sameLength :: r x `p` f (q y) -> r x `p` f (q y)   sameLength = id +-- | 'asTypeOf' asLengthOf :: SameLength x y => r x -> s y -> r x asLengthOf = const 
Data/HList/HArray.hs view
@@ -47,22 +47,27 @@  -- -------------------------------------------------------------------------- -- * Update+class HUpdateAtHNat' n e l l => HUpdateAtHNat n e l where+    hUpdateAtHNat :: Proxy n -> e -> HList l -> HList (HUpdateAtHNatR n e l) -class HUpdateAtHNat (n :: HNat) e (l :: [*]) where+instance HUpdateAtHNat' n e l l => HUpdateAtHNat n e l where+    hUpdateAtHNat = hUpdateAtHNat' (Proxy :: Proxy l)++class HUpdateAtHNat' (n :: HNat) e (l :: [*]) (l0 :: [*]) where   type HUpdateAtHNatR (n :: HNat) e (l :: [*]) :: [*]-  hUpdateAtHNat :: Proxy n -> e -> HList l -> HList (HUpdateAtHNatR n e l)+  hUpdateAtHNat' :: Proxy l0 -> Proxy n -> e -> HList l -> HList (HUpdateAtHNatR n e l) -instance HUpdateAtHNat HZero e1 (e ': l) where+instance HUpdateAtHNat' HZero e1 (e ': l) l0 where   type HUpdateAtHNatR  HZero e1 (e ': l) = e1 ': l-  hUpdateAtHNat _ e1 (HCons _ l)         = HCons e1 l+  hUpdateAtHNat' _ _ e1 (HCons _ l)      = HCons e1 l -instance HUpdateAtHNat n e1 l => HUpdateAtHNat (HSucc n) e1 (e ': l) where+instance HUpdateAtHNat' n e1 l l0 => HUpdateAtHNat' (HSucc n) e1 (e ': l) l0 where   type HUpdateAtHNatR  (HSucc n) e1 (e ': l) = e ': (HUpdateAtHNatR n e1 l)-  hUpdateAtHNat n e1 (HCons e l) = HCons e (hUpdateAtHNat (hPred n) e1 l)+  hUpdateAtHNat' l0 n e1 (HCons e l) = HCons e (hUpdateAtHNat' l0 (hPred n) e1 l) -instance Fail (FieldNotFound (Proxy n, e1)) => HUpdateAtHNat n e1 '[] where+instance Fail (HNatIndexTooLarge n HList l0) => HUpdateAtHNat' n e1 '[] l0 where   type HUpdateAtHNatR n e1 '[] = '[]-  hUpdateAtHNat _ _ _ = error "Data.HList.HArray.HUpdateAtHNat: Fail must have no instances"+  hUpdateAtHNat' _ _ _ = error "Data.HList.HArray.HUpdateAtHNat: Fail must have no instances"  -- -------------------------------------------------------------------------- -- * Projection
Data/HList/HList.hs view
@@ -5,9 +5,6 @@     Basic declarations for typeful heterogeneous lists. -   Excuse the unstructured haddocks: while there are many declarations here-   some are alternative implementations should be grouped, and the definitions-   here are analgous to many list functions in the "Prelude".  -}  module Data.HList.HList where@@ -21,6 +18,7 @@ import LensDefs  import Data.Array (Ix)+import Data.Semigroup  -- -------------------------------------------------------------------------- -- * Heterogeneous type sequences@@ -490,7 +488,7 @@ class HFoldl f (z :: *) xs (r :: *) where     hFoldl :: f -> z -> HList xs -> r -instance forall f z z' r x zx xs. (zx ~ (z,x), ApplyAB f zx z', HFoldl f z' xs r)+instance (zx ~ (z,x), ApplyAB f zx z', HFoldl f z' xs r)     => HFoldl f z (x ': xs) r where     hFoldl f z (x `HCons` xs) = hFoldl f (applyAB f (z,x) :: z') xs @@ -995,17 +993,17 @@  -- * Find an element in a set based on HEq -- | It is a pure type-level operation-class HFind1 e l n => HFind (e :: k) (l :: [k]) (n :: HNat) | e l -> n-instance HFind1 e l n => HFind e l n+class HFind1 e l l n => HFind (e :: k) (l :: [k]) (n :: HNat) | e l -> n+instance HFind1 e l l n => HFind e l n -class HFind1 (e :: k) (l :: [k]) (n :: HNat) | e l -> n+class HFind1 (e :: k) (l :: [k]) (l0 :: [k]) (n :: HNat) | e l -> n -instance (HEq e1 e2 b, HFind2 b e1 l n) => HFind1 e1 (e2 ': l) n-instance Fail (FieldNotFound e1) => HFind1 e1 '[] HZero+instance (HEq e1 e2 b, HFind2 b e1 l l0 n) => HFind1 e1 (e2 ': l) l0 n+instance Fail (FieldNotFound e1 l0) => HFind1 e1 '[] l0 HZero -class HFind2 (b::Bool) (e :: k) (l::[k]) (n:: HNat) | b e l -> n-instance HFind2 True e l HZero-instance HFind1 e l n => HFind2 False e l (HSucc n)+class HFind2 (b::Bool) (e :: k) (l::[k]) (l0::[k]) (n:: HNat) | b e l -> n+instance HFind2 True e l l0 HZero+instance HFind1 e l l0 n => HFind2 False e l l0 (HSucc n)   @@ -1097,7 +1095,7 @@ -- | @Prism' [a] (HList s)@ -- -- where @s ~ HReplicateR n a@-listAsHList' x = simple (listAsHList (simple x))+listAsHList' x = isSimple listAsHList x   -- --------------------------------------------------------------------------@@ -1354,6 +1352,14 @@ instance (HLengthEq xs n, sn ~ HSucc n) => HLengthEq2 (x ': xs) sn instance zero ~ HZero => HLengthEq2 '[] zero +-- | @HLengthGe xs n@ says that @HLength xs >= n@.+--+-- unlike the expression with a type family HLength,+-- ghc assumes @xs ~ (aFresh ': bFresh)@ when given a+-- constraint @HLengthGe xs (HSucc HZero)@+class HLengthGe (xs :: [*]) (n :: HNat)+instance (HLengthGe xs n, xxs ~ (x ': xs)) => HLengthGe xxs (HSucc n)+instance HLengthGe xxs HZero  -- | @HAppendList1 xs ys xsys@ is the type-level way of saying @xs ++ ys == xsys@ --@@ -1375,6 +1381,30 @@ instance HStripPrefix '[] ys ys  +-- ** take++class HTake (n :: HNat) xs ys | n xs -> ys where+    hTake :: (HLengthEq ys n, HLengthGe xs n) => Proxy n -> HList xs -> HList ys++instance HTake HZero xs '[] where+    hTake _ _ = HNil++instance (HLengthEq ys n, HLengthGe xs n, HTake n xs ys)+        => HTake (HSucc n) (x ': xs) (x ': ys) where+    hTake sn (HCons x xs) = HCons x (hTake (hPred sn) xs)++-- ** drop++class HDrop (n :: HNat) xs ys | n xs -> ys where+    hDrop :: HLengthGe xs n => Proxy n -> HList xs -> HList ys++instance HDrop HZero xs xs where+    hDrop _ xs = xs++instance (HLengthGe xs n, HDrop n xs ys) => HDrop (HSucc n) (x ': xs) ys where+    hDrop sn (HCons _ xs) = hDrop (hPred sn) xs++ -- * Conversion to and from tuples  class HTuple v t | v -> t, t -> v where@@ -1386,7 +1416,7 @@ hTuple x = iso hToTuple hFromTuple x  -- | @Iso' (HList v) a@-hTuple' x = simple (hTuple x)+hTuple' x = isSimple hTuple x  instance HTuple '[] () where     hToTuple HNil = ()@@ -1601,6 +1631,10 @@             $ (hProxies :: HList (AddProxy a))   mappend a b = hMap UncurryMappend $ hZip a b +instance+    (HZip HList a a aa,+     HMapCxt HList UncurryMappend aa a) => Semigroup (HList a) where+  a <> b = hMap UncurryMappend $ hZip a b  -- ** helper functions @@ -1612,4 +1646,7 @@ instance (aa ~ (a,a), Monoid a) => ApplyAB UncurryMappend aa a where     applyAB _ = uncurry mappend +data UncurrySappend = UncurrySappend+instance (aa ~ (a,a), Semigroup a) => ApplyAB UncurrySappend aa a where+    applyAB _ = uncurry (<>) 
Data/HList/HListPrelude.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-}  {- |    The HList library@@ -92,5 +93,45 @@ -- | 'zip'. Variant supports hUnzip, but not hZip ('hZipVariant' returns a Maybe) class HUnzip r x y xy => HZip (r :: [*] -> *) x y xy where   hZip :: r x -> r y -> r xy++#if __GLASGOW_HASKELL__ != 706+instance (lv ~ Tagged l v, HUnzip Proxy ls vs lvs)+    => HUnzip Proxy (Label l ': ls) (v ': vs) (lv ': lvs) where+    hUnzip _ = (Proxy, Proxy)++instance HUnzip Proxy '[] '[] '[] where hUnzip _ = (Proxy, Proxy)+++{- | Missing from GHC-7.6.3 due to a bug:++> let r = hEnd $ hBuild 1 2 3+> *Data.HList> hZipList r r+> H[(1,1),(2,2),(3,3)]+> *Data.HList> hZip r r+>+> <interactive>:30:1:+>     Couldn't match type `Label k l' with `Integer'+>     When using functional dependencies to combine+>       HUnzip+>         (Proxy [*]) ((':) * (Label k l) ls) ((':) * v vs) ((':) * lv lvs),+>         arising from the dependency `xy -> x y'+>         in the instance declaration at Data/HList/HListPrelude.hs:96:10+>       HUnzip+>         HList+>         ((':) * Integer ((':) * Integer ((':) * Integer ('[] *))))+>         ((':) * Integer ((':) * Integer ((':) * Integer ('[] *))))+>         ((':)+>            *+>            (Integer, Integer)+>            ((':) * (Integer, Integer) ((':) * (Integer, Integer) ('[] *)))),+>         arising from a use of `hZip' at <interactive>:30:1-4+>     In the expression: hZip r r+>     In an equation for `it': it = hZip r r++-}+instance HUnzip Proxy ls vs lvs+      => HZip Proxy ls vs lvs where+  hZip _ _ = Proxy+#endif  
Data/HList/HOccurs.hs view
@@ -82,18 +82,21 @@  data TypeNotFound e -instance (HOccurrence e (x ': y) l', HOccurs' e l')+instance (HOccurrence e (x ': y) l', HOccurs' e l' (x ': y))     => HOccurs e (HList (x ': y)) where-    hOccurs = hOccurs' . hOccurrence (Proxy ::Proxy e)+    hOccurs = hOccurs' (Proxy :: Proxy (x ': y)) . hOccurrence (Proxy ::Proxy e) -class HOccurs' e l where-    hOccurs' :: HList l -> e+-- | l0 is the original list so that when we reach the end of l+-- without finding an e, we can report an error that gives an+-- idea about what the original list was.+class HOccurs' e l (l0 :: [*]) where+    hOccurs' :: Proxy l0 -> HList l -> e -instance Fail (TypeNotFound e) => HOccurs' e '[] where-    hOccurs' = error "Data.HList.FakePrelude.Fail must have no instances"+instance Fail (FieldNotFound e (HList l0)) => HOccurs' e '[] l0 where+    hOccurs' = error "HOccurs'' Fail failed" -instance (e ~ e1, HOccursNot e l) => HOccurs' e (e ': l) where-    hOccurs' (HCons e _) = e+instance HOccursNot e l => HOccurs' e (e ': l) l0 where+    hOccurs' _ (HCons e _) = e  -- | lookup a value in the collection (TIP usually) and return the TIP with that -- element deleted. Used to implement 'tipyTuple'.@@ -122,12 +125,15 @@ -- -------------------------------------------------------------------------- -- Class to test that a type is "free" in a type sequence -data TypeFound e-instance HOccursNot e ('[]::[*])-instance (HEq e e1 b, HOccursNot' b e l) => HOccursNot e (e1 ': l)-class HOccursNot' (b :: Bool) e (l :: [*])-instance Fail (TypeFound e) => HOccursNot' True e l-instance HOccursNot e l => HOccursNot' False e l+instance HOccursNot1 e xs xs => HOccursNot e xs++class HOccursNot1 (e :: k) (xs :: [k]) (xs0 :: [k])++instance HOccursNot1 (e :: k) ('[]::[k]) l0+instance (HEq e e1 b, HOccursNot2 b e l l0) => HOccursNot1 e (e1 ': l) l0+class HOccursNot2 (b :: Bool) e (l :: [k]) (l0 :: [k])+instance Fail (ExcessFieldFound e l0) => HOccursNot2 True e l l0+instance HOccursNot1 e l l0 => HOccursNot2 False e l l0   -- --------------------------------------------------------------------------
Data/HList/HSort.hs view
@@ -92,7 +92,8 @@  instance (SameLength a b,           HIsAscList le a ok,-          HSortBy1 ok le a b) => HSortBy le a b where+          HSortBy1 ok le a b,+          HEqByFn le) => HSortBy le a b where     hSortBy = hSortBy1 (Proxy :: Proxy ok)  instance HSortBy1 True le a a where@@ -208,7 +209,7 @@  -} class HEqByFn lt => HSetBy lt (ps :: [*])-instance (HSortBy lt ps ps', HAscList lt ps') => HSetBy lt ps+instance (HEqByFn lt, HSortBy lt ps ps', HAscList lt ps') => HSetBy lt ps  class HSetBy (HNeq HLeFn) ps => HSet (ps :: [*]) instance HSetBy (HNeq HLeFn) ps => HSet ps@@ -228,14 +229,14 @@ instance HIsSetBy (HNeq HLeFn) ps b => HIsSet ps b  class HEqByFn lt => HIsSetBy lt (ps :: [*]) (b :: Bool) | lt ps -> b-instance (HSortBy lt ps ps', HIsAscList lt ps' b) => HIsSetBy lt ps b+instance (HEqByFn lt, HSortBy lt ps ps', HIsAscList lt ps' b) => HIsSetBy lt ps b   -- | @HAscList le xs@ confirms that xs is in ascending order, -- and reports which element is duplicated otherwise. class HEqByFn le => HAscList le (ps :: [*]) -instance HAscList0 le ps ps => HAscList le ps+instance (HEqByFn le, HAscList0 le ps ps) => HAscList le ps  class HEqByFn le => HAscList0 le (ps :: [*]) (ps0 :: [*]) 
Data/HList/Labelable.hs view
@@ -33,7 +33,7 @@     LabeledCxt1,     LabeledTo(LabeledTo),     LabeledR(LabeledR),-    ToSym(toLabel),+    ToSym, EnsureLabel(toLabel), toLabelSym,     Identity,     LabelableTIPCxt,     LabeledOpticType(..),@@ -112,7 +112,19 @@  data LabeledR (x :: [*]) = LabeledR +{- if __GLASGOW_HASKELL__ > 800+-- should this orphan instance really be supplied? ghc 8's+-- -XOverloadedLabels is uglier syntax than HListPP, and it+-- seems likely that other users of IsLabel probably define+-- an instance for (->) which will be chosen over this one+-- when labels are composed with (.),+-- (or alternatively there will be complaints about overlap)+instance (x ~ x', Labelable x r s t a b) => IsLabel x (LabeledOptic x' r s t a b) where+    fromLabel _ = hLens' (Label :: Label x)+-- endif+-} + -- | make a @Lens (Record s) (Record t) a b@ instance HLens x Record s t a b         => Labelable x Record s t a b where@@ -138,9 +150,12 @@ -- -- note that a more general function @'ticPrism' :: Prism (TIC s) (TIC t) a b@, -- cannot have an instance of Labelable-instance (TICPrism s t a b, x ~ a, a ~ b, s ~ t,+--+-- Note: `x :: k` according to the instance head, but the instance body+-- forces the kind variable to be * later on. IE. (k ~ *)+instance (TICPrism s t a b, Label x ~ Label a,a ~ b, s ~ t,           SameLength s t) =>-    Labelable (x :: *) TIC s t a b where+    Labelable (x :: k) TIC s t a b where       type LabelableTy TIC = LabelablePrism       hLens' _ = ticPrism @@ -150,12 +165,12 @@ -- 'tipyLens' provides a @Lens (TIP s) (TIP t) a b@, which tends to need -- too many type annotations to be practical instance LabelableTIPCxt x s t a b =>-    Labelable x TIP s t a b where+    Labelable (x :: k) TIP s t a b where     type LabelableTy TIP = LabelableLens     hLens' = hLens  type LabelableTIPCxt x s t a b =-     (s ~ t, a ~ b, x ~ a,+     (s ~ t, a ~ b, Label x ~ Label a,       HLens x TIP s t a b)  @@ -167,25 +182,40 @@  infixr 4 .==. +-- | Get the Symbol out of a 'Label' or 'LabeledTo'+class ToSym label (s :: Symbol) | label -> s -{- | Create a @'Label' (x :: 'Symbol')@:+instance LabeledTo x (a `p` f b) (LabeledR s `p` f (LabeledR t)) ~ v1 v2 v3+    => ToSym (v1 v2 v3) x -> toLabel :: LabeledTo x _ _ -> Label x+instance ToSym (label x) x++{- | Convert a type to @Label :: Label blah@++> toLabel :: LabeledTo x _ _ -> Label (x :: Symbol)+> toLabel (hLens' lx)         = (lx :: Label x) > toLabel :: Label x         -> Label x > toLabel :: Proxy x         -> Label x  -}-class ToSym label (s :: Symbol) | label -> s where-    toLabel :: label -> Label s+class EnsureLabel x y | x -> y where+  toLabel :: x -> y -instance LabeledTo x (a `p` f b) (LabeledR s `p` f (LabeledR t)) ~ v1 v2 v3-    => ToSym (v1 v2 v3) x where-      toLabel _ = Label+instance EnsureLabel (Label x) (Label (x :: k)) where+  toLabel _ = Label -instance ToSym (label x) x where-    toLabel _ = Label+instance EnsureLabel (Proxy x) (Label (x :: k)) where+  toLabel _ = Label +-- | get the Label out of a 'LabeledTo' (ie. `foobar when using HListPP).+instance ToSym (a b c) (x :: Symbol) => EnsureLabel (a b c) (Label x) where+  toLabel _ = Label ++-- | fix the `k` kind variable to 'Symbol'+toLabelSym label = toLabel label `asTypeOf` (Label :: Label (x :: Symbol))++ {- $comparisonWithhLensFunction  Note that passing around variables defined with 'hLens'' doesn't get@@ -281,7 +311,7 @@  @Prism' (Variant s) (Variant a)@ -}-projected' s = simple (projected (simple s))+projected' s = isSimple projected s   {- | Together with the instance below, this allows writing
Data/HList/MakeLabels.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-}  {- | Description : Automate some of the ways to make labels.@@ -34,7 +35,14 @@     c = make_cname n     d = make_dname n -    dd = dataD (return []) c [] [] [''Typeable]+    dd =+#if MIN_VERSION_template_haskell(2,12,0)+      dataD (return []) c [] Nothing [] [derivClause Nothing [ [t| Typeable |] ]]+#elif MIN_VERSION_template_haskell(2,11,0)+      dataD (return []) c [] Nothing [] (fmap (:[]) [t| Typeable |])+#else+      dataD (return []) c [] [] [''Typeable]+#endif      labelSig = sigD d [t| Label $(conT c) |] 
Data/HList/Record.hs view
@@ -1,4 +1,4 @@-+{-# LANGUAGE CPP #-} {- |    The HList library @@ -150,7 +150,9 @@     -- * Unclassified      -- | Probably internals, that may not be useful+#if __GLASGOW_HASKELL__ != 706     zipTagged,+#endif     HasField'(..),     DemoteMaybe,     HasFieldM1(..),@@ -196,6 +198,7 @@ import LensDefs  import Data.Array (Ix)+import Data.Semigroup (Semigroup)  -- imports for doctest/examples import Data.HList.Label6 ()@@ -246,6 +249,7 @@  newtype Record (r :: [*]) = Record (HList r) +deriving instance Semigroup (HList r) => Semigroup (Record r) deriving instance Monoid (HList r) => Monoid (Record r) deriving instance (Eq (HList r)) => Eq (Record r) deriving instance (Ord (HList r)) => Ord (Record r)@@ -261,7 +265,7 @@ hListRecord x = isoNewtype mkRecord (\(Record r) -> r) x  -- | @Iso' (HList s) (Record s)@-hListRecord' x = simple (isoNewtype Record (\(Record r) -> r) x)+hListRecord' x = isSimple hListRecord x  -- | Build an empty record emptyRecord :: Record '[]@@ -322,7 +326,7 @@ -- | @Iso' (Record s) (Record a)@ -- -- such that @RecordValuesR s ~ RecordValuesR a@-relabeled' x = simple (relabeled x)+relabeled' x = isSimple relabeled x  data TaggedFn = TaggedFn instance (tx ~ Tagged t x) => ApplyAB TaggedFn x tx where@@ -400,7 +404,8 @@ instance RecordValues '[] where   type RecordValuesR '[] = '[]   recordValues' _ = HNil-instance RecordValues r=> RecordValues (Tagged l v ': r) where+instance (SameLength' r (RecordValuesR r),+          SameLength' (RecordValuesR r) r, RecordValues r) => RecordValues (Tagged l v ': r) where    type RecordValuesR (Tagged l v ': r) = v ': RecordValuesR r    recordValues' (HCons (Tagged v) r) = HCons v (recordValues' r) @@ -465,7 +470,15 @@ instance (HMapCxt HList ReadComponent (AddProxy rs) bs,           ApplyAB ReadComponent (Proxy r) readP_r,           HProxies rs,-          HSequence ReadP (readP_r ': bs) (r ': rs)) => Read (Record (r ': rs)) where+          HSequence ReadP (readP_r ': bs) (r ': rs),++          -- ghc-8.0.2 needs these. The above constraints+          -- should imply them+          r ~ Tagged l v,+          ShowLabel l,+          Read v,+          HSequence ReadP bs rs+          ) => Read (Record (r ': rs)) where     readsPrec _ = readP_to_S $ do         _ <- string "Record{"         content <- hSequence parsers@@ -589,7 +602,8 @@     hLookupByLabel l (Record r) =              hLookupByLabel' (Proxy::Proxy b) l r -instance Fail (FieldNotFound l) => HasField l (Record '[]) (FieldNotFound l) where+-- | XXX+instance (t ~ Any, Fail (FieldNotFound l ())) => HasField l (Record '[]) t where     hLookupByLabel _ _ = error "Data.HList.Record.HasField: Fail instances should not exist"  @@ -724,7 +738,8 @@     => HUpdateAtLabel2 l v (Tagged l' e ': xs) xs' where     hUpdateAtLabel2 = hUpdateAtLabel1 (Proxy :: Proxy b) -instance Fail (FieldNotFound l) => HUpdateAtLabel2 l v '[] '[] where+-- | XXX+instance Fail (FieldNotFound l ()) => HUpdateAtLabel2 l v '[] '[] where     hUpdateAtLabel2 _ _ r = r  @@ -825,6 +840,8 @@     h2projectByLabels' _ _ (HCons x r) = (HCons x rin, rout)         where (rin,rout) = h2projectByLabels (Proxy::Proxy ls1) r +-- | if ls above has labels not in the record,+-- we get labels (rin `isSubsetOf` ls). instance H2ProjectByLabels ls r rin rout =>     H2ProjectByLabels' 'Nothing ls (f ': r) rin (f ': rout) where     h2projectByLabels' _ ls (HCons x r) = (rin, HCons x rout)@@ -1055,7 +1072,7 @@ {- | @Iso' (r s) (r a)@  where @s@ is a permutation of @a@ -}-rearranged' x = simple (rearranged (simple x))+rearranged' x = isSimple rearranged x  -- | Helper class for 'hRearrange' class (HRearrange3 ls r r', LabelsOf r' ~ ls,@@ -1094,8 +1111,8 @@    hRearrange4 _ ls (HCons lv@(Tagged v) _HNil) rout         = HCons (Tagged v `asTypeOf` lv) (hRearrange3 ls rout) --- | For improved error messages-instance Fail (FieldNotFound l) =>+-- | For improved error messages. XXX FieldNotFound+instance Fail (FieldNotFound l ()) =>         HRearrange4 l ls '[] rout '[] where    hRearrange4 _ _ _ _ = error "Fail has no instances" @@ -1234,20 +1251,11 @@     hUnzip = hUnzipRecord  -instance (RecordValuesR lvs ~ vs,-          SameLabels ls lvs,-          LabelsOf lvs ~ ls,-          SameLengths [ls,vs,lvs],-          HAllTaggedLV lvs)-    => HUnzip Proxy ls vs lvs where-    hUnzip _ = (Proxy, Proxy)--instance HUnzip Proxy ls vs lvs-      => HZip Proxy ls vs lvs where-  hZip _ _ = Proxy-+#if __GLASGOW_HASKELL__ != 706+{- | Missing from ghc-7.6, because HZip Proxy instances interfere with HZip+HList instances. -{- | a variation on 'hZip' for 'Proxy', where+a variation on 'hZip' for 'Proxy', where the list of labels does not have to include Label (as in @ts'@) @@ -1275,6 +1283,7 @@               HZip Proxy lts vs tvs)       => Proxy ts -> proxy vs -> Proxy tvs zipTagged _ _ = Proxy+#endif   
Data/HList/RecordU.hs view
@@ -16,7 +16,6 @@ import Data.HList.Labelable  import Unsafe.Coerce-import GHC.Exts (Any)  -- * Type definitions -- ** RecordUS@@ -195,7 +194,7 @@  -- ** with the actual representation --- | @Iso (HList s) (HList t) (RecordUS a) (Record b)@+-- | @Iso (HList s) (HList t) (RecordUS a) (RecordUS b)@ recordUS r = iso hListToRecordUS recordUSToHList r  {- | @Iso (HList s) (RecordUS a)@@@ -204,7 +203,7 @@ is list of @Tagged label value@  -}-recordUS' r = simple (recordUS r)+recordUS' r = isSimple recordUS r  -- ** with 'Record' @@ -239,7 +238,7 @@ unboxedS r = iso recordToRecordUS recordUSToRecord r  -- | @Iso' (Record x) (RecordUS x)@-unboxedS' r = simple (unboxedS r)+unboxedS' r = isSimple unboxedS r   @@ -327,7 +326,7 @@ unboxed r = iso recordToRecordU recordUToRecord r  -- | @Iso' (Record x) (RecordU x)@-unboxed' x = simple (unboxed x)+unboxed' x = isSimple unboxed x   class RecordToRecordU x where
Data/HList/TIC.hs view
@@ -24,6 +24,7 @@ import Data.HList.HArray  import Data.Array (Ix)+import Data.Semigroup (Semigroup)  import Text.ParserCombinators.ReadP import LensDefs@@ -41,6 +42,7 @@ deriving instance Bounded (Variant l) => Bounded (TIC l) deriving instance Enum (Variant l) => Enum (TIC l) deriving instance Monoid (Variant l) => Monoid (TIC l)+deriving instance Semigroup (Variant l) => Semigroup (TIC l)   instance HMapAux Variant f xs ys => HMapAux TIC f xs ys where@@ -52,7 +54,7 @@ ticVariant x = isoNewtype (\(TIC a) -> a) TIC x  -- | @Iso' (TIC s) (Variant s)@-ticVariant' x = simple (ticVariant x)+ticVariant' x = isSimple ticVariant x   -- --------------------------------------------------------------------------@@ -108,7 +110,7 @@ where @s@ has a type like @'[Tagged \"x\" Int]@, and @a@ has a type like @'[Tagged Int Int]@. -}-typeIndexed' x = simple (typeIndexed x)+typeIndexed' x = isSimple typeIndexed x  -- -------------------------------------------------------------------------- -- | Public constructor (or, open union's injection function)
Data/HList/TIP.hs view
@@ -20,11 +20,16 @@ import Data.HList.HList import Data.HList.Record import Data.HList.HTypeIndexed ()-import Data.HList.HOccurs import Data.HList.TIPtuple import Data.List (intercalate) import Data.Array (Ix)+import Data.Semigroup (Semigroup) ++#if __GLASGOW_HASKELL__ > 710+import Data.Coerce+#endif+ import LensDefs  -- --------------------------------------------------------------------------@@ -34,6 +39,7 @@ -- has type @Tagged e_i e_i@ newtype TIP (l :: [*]) = TIP{unTIP:: HList l} +deriving instance Semigroup (HList a) => Semigroup (TIP a) deriving instance Monoid (HList a) => Monoid (TIP a) deriving instance Eq (HList a) => Eq (TIP a) deriving instance (Ord (HList r)) => Ord (TIP r)@@ -134,9 +140,9 @@ -- | provides a @Lens' (TIP s) a@. 'hLens'' @:: Label a -> Lens' (TIP s) a@ -- is another option. #if __GLASGOW_HASKELL__ < 707-tipyLens' x = simple (tipyLens x) -- rejected by GHC-7.10RC1+tipyLens' x = isSimple tipyLens x -- rejected by GHC-7.10RC1 #else-tipyLens' f s = simple (hLens x f) (asTIP s) -- rejected by GHC-7.6.3+tipyLens' f s = isSimple (hLens x) f (asTIP s) -- rejected by GHC-7.6.3   where     x = getA f     getA :: (a -> f a) -> Label a@@ -152,16 +158,31 @@ ambiguity as to which field \"a\" should actually be updated.  -}-tipyLens f s = hLens x f (asTIP s)+tipyLens f (TIP s) =+      case hSplitAt (getN s f) (ghc8fix1 s) of+          (x, ta @ (Tagged a) `HCons` ys)+             | () <- ghc8fix2 ta ->+              let mkt b = mkTIP (x `hAppendList` (tagSelf b `HCons` ys))+              in mkt <$> f a   where-    x = getA f-    getA :: (a -> f b) -> Label a-    getA _ = Label+    getN :: HFind (Label a) (LabelsOf s) n => HList s -> (a -> f b) -> Proxy n+    getN _ _ = Proxy -    asTIP :: TIP a -> TIP a-    asTIP = id+    -- without these, tipyLens has a type that has kind variables,+    -- (that end up being * when an actual TIP is provided), leading to+    -- a Properties.LengthIndependent compile error:+    -- .../.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/build/Data/HList/TIP.hi+    -- Declaration for tipyLens:+    --   Iface type variable out of scope:  k+    -- Cannot continue after interface file error+    ghc8fix1 :: HList (Tagged x x ': xs) -> HList (Tagged x x ': xs)+    ghc8fix1 = id +    ghc8fix2 :: Tagged a a -> ()+    ghc8fix2 _ = () ++ -- | The same as 'tipyProject', except also return the -- types not requested in the @proxy@ argument tipyProject2 ps (TIP l) = (mkTIP l',mkTIP l'')@@ -242,7 +263,7 @@ -- | Sometimes the type variables available have @TagR@ already applied -- (ie the lists have elements like @Tagged X X@). Then this abbreviation -- is useful:-type UntagTag xs = TagUntagFD (UntagR xs) xs+type UntagTag xs = (TagR (UntagR xs) ~ xs, TagUntagFD (UntagR xs) xs)  type family TagR (a :: [*]) :: [*] type family UntagR (ta :: [*]) :: [*]@@ -261,7 +282,7 @@ tipHList x = iso (\(TIP a) -> hUntagSelf a) (TIP . hTagSelf) x  -- | @Iso' (TIP (TagR s)) (HList a)@-tipHList' x = simple (tipHList x)+tipHList' x = isSimple tipHList x   -- * conversion to and from 'Record'@@ -272,11 +293,13 @@ tipRecord x = isoNewtype (\(TIP a) -> Record a) (\(Record b) -> TIP b) x  -- | @Iso' (TIP (TagR s)) (Record a)@-tipRecord' x = simple (tipRecord x)+tipRecord' x = isSimple tipRecord x  -- -------------------------------------------------------------------------- -- * Zip +#if __GLASGOW_HASKELL__ < 800+-- pre-coerce instance (HZipList (UntagR x) (UntagR y) (UntagR xy),           UntagTag x, UntagTag y, UntagTag xy,           SameLengths [x,y,xy],@@ -295,6 +318,31 @@           SameLengths [x,y,xy]) => HUnzip TIP x y xy where   hUnzip = hUnzipTIP +#else+-- ghc-7.10.3 has coerce, but rejects these instances+instance (HZipList xL yL xyL,+          lty ~ (HList xyL -> (HList xL,HList yL)),+          Coercible lty (TIP xy -> (TIP x, TIP y)),+          UntagR x ~ xL, TagR xL ~ x, -- `TagR (UntagR x) ~ x` included by UntagTag+          UntagR y ~ yL, TagR yL ~ y,+          UntagR xy ~ xyL, TagR xyL ~ xy,+          SameLengths '[x,y,xy],+          UntagTag x, UntagTag y, UntagTag xy+        ) => HUnzip TIP x y xy where+  hUnzip = coerce (hUnzipList :: lty)++instance (HUnzip TIP x y xy,+          HZipList xL yL xyL,+          lty ~ (HList xL -> HList yL -> HList xyL),+          Coercible lty (TIP x -> TIP y -> TIP xy) ,+          UntagR x ~ xL,+          UntagR y ~ yL,+          UntagR xy ~ xyL,+          UntagTag x, UntagTag y, UntagTag xy+        ) => HZip TIP x y xy where+  hZip = coerce (hZipList :: lty)+#endif+ -- | specialization of 'hZip' hZipTIP (TIP x) (TIP y) = TIP (hTagSelf (hZipList (hUntagSelf x) (hUntagSelf y))) @@ -350,8 +398,9 @@     => TransTIP1 False (HSucc n) (arg -> op) db where     ttip1 _ _ = ttip2 (Proxy :: Proxy b) -instance Fail '(TypeNotFound notfun, "in TIP", db) => TransTIP1 False HZero notfun db where-    ttip1 = error "TransTIP1 Fail must have no instances"+instance Fail (FieldNotFound notfun (TIP db))+      => TransTIP1 False HZero notfun db where+    ttip1 = error "TransTIP1 Fail failed"  class TransTIP2 (b :: Bool) arg op db where     ttip2 :: Proxy b -> (arg -> op) -> TIP db -> TIP db@@ -361,8 +410,9 @@    => TransTIP2 True arg op db where     ttip2 _ f db = ttip (f (hOccurs db)) db -instance Fail '(TypeNotFound arg, "in TIP", db) => TransTIP2 False arg op db where-    ttip2 = error "TransTIP2 Fail must have no instances"+instance Fail (FieldNotFound arg (TIP db))+    => TransTIP2 False arg op db where+    ttip2 = error "TransTIP2 Fail failed"  -- ** Monadic version @@ -400,9 +450,9 @@          op' <- op          return $ tipyUpdate op' db -instance (Fail '(TypeNotFound op, "in TIP", db), Monad m)+instance (Fail (FieldNotFound op (TIP db)), Monad m)     => TransTIPM1 False HZero m op db where-    ttipM1 _ _ = error "TransTIPM1 Fail must have no instances"+    ttipM1 _ _ = error "TransTIPM1 Fail failed"  -- If op is not found in a TIP, it must be a function. Look up -- its argument in a TIP and recur.@@ -421,9 +471,9 @@     ttipM2 _ f db = ttipM (f (hOccurs db)) db  -instance (Fail '(TypeNotFound op, "in TIP", db))+instance Fail (FieldNotFound op (TIP db))     => TransTIPM2 False m arg op db where-    ttipM2 _ _ = error "TransTIPM1 Fail must have no instances"+    ttipM2 _ _ = error "TransTIPM1 Fail failed"  -- -------------------------------------------------------------------------- 
Data/HList/Variant.hs view
@@ -27,9 +27,9 @@ import Text.ParserCombinators.ReadP hiding (optional)  import Unsafe.Coerce-import GHC.Prim (Any) import GHC.Exts (Constraint) +import Data.Semigroup (Semigroup( .. )) import Data.Data import Control.Applicative import LensDefs@@ -738,6 +738,8 @@   instance (HUnzip Variant (x2 ': xs) (y2 ': ys) (xy2 ': xys),+          SameLength xs ys,+          SameLength ys xys,           tx ~ Tagged t x,           ty ~ Tagged t y,           txy ~ Tagged t (x,y))@@ -911,7 +913,18 @@  -- * Ix (TODO) +-- * Semigroup+instance (Unvariant '[Tagged t x] x, Semigroup x) => Semigroup (Variant '[Tagged t x]) where+    a <> b = case (unvariant a, unvariant b) of+                    (l, r) -> mkVariant (Label :: Label t) (l <> r) Proxy +instance (Semigroup x, Semigroup (Variant (a ': b))) => Semigroup (Variant (Tagged t x ': a ': b)) where+    a <> b = case (splitVariant1 a, splitVariant1 b) of+                    (Left l, Left r) -> mkVariant (Label :: Label t) (l <> r) Proxy+                    (Left l, _) -> mkVariant (Label :: Label t) l Proxy+                    (_, Left r) -> mkVariant (Label :: Label t) r Proxy+                    (Right l, Right r) -> extendVariant $ l <> r+ -- * Monoid instance (Unvariant '[Tagged t x] x, Monoid x) => Monoid (Variant '[Tagged t x]) where     mempty = mkVariant (Label :: Label t) mempty Proxy@@ -919,7 +932,6 @@                     (l, r) -> mkVariant (Label :: Label t) (mappend l r) Proxy  --- | XXX check this mappend is legal instance (Monoid x, Monoid (Variant (a ': b))) => Monoid (Variant (Tagged t x ': a ': b)) where     mempty = extendVariant mempty     mappend a b = case (splitVariant1 a, splitVariant1 b) of
− Data/HList/broken/VariantOld.hs
@@ -1,68 +0,0 @@-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE FlexibleContexts, FlexibleInstances, FunctionalDependencies, MultiParamTypeClasses, UndecidableInstances #-}---{- |-   The HList library--   (C) 2004, Oleg Kiselyov, Ralf Laemmel, Keean Schupke--   Variants, i.e., labelled sums.--   One approach to their implementation would be to consider both-   the favoured label and the corresponding value as dynamics upon-   variant construction. Since we are too lazy to programme some-   Typeable instances for non-ghc systems (NB: in GHC, Typeable-   is derivable), we rather model variants as (opaque) records-   with maybies for the values. Only one value will actually hold-   non-Nothing, as guaranteed by the constructor.--   See VariantP.hs for a different approach to open sums.--}--module Data.HList.Variant where--import Data.HList.FakePrelude-import Data.HList.Record-import Data.HList.HList----- ----------------------------------------------------------------------------- | Variant types on the basis of label-maybe pairs.--newtype Variant mr = Variant mr----- ----------------------------------------------------------------------------- | Turn proxy sequence into sequence of Nothings--data HMaybeF = HMaybeF-instance ((Tagged l (Proxy t) ~ a, b ~ Tagged l (Maybe t))) =>  ApplyAB HMaybeF a b   where-    applyAB _ _ = Tagged Nothing--hMaybied x = hMap HMaybeF x----- ----------------------------------------------------------------------------- | Public constructor--- it seems we can blame 'hUpdateAtLabel' (not 'HMap') for needing the asTypeOf?-mkVariant x y (Record v) = let r1 = Record (hMaybied v) in-    case hUpdateAtLabel x (Just y) r1 `asTypeOf` r1 of-    Record t -> Variant t---- ----------------------------------------------------------------------------- | Public destructor--unVariant x (Variant v) = hLookupByLabel x (Record v)----- ----------------------------------------------------------------------------- | Variants are opaque--instance Show (Variant v)- where-  show _ = "<Cannot show Variant content!>"--
HList.cabal view
@@ -1,5 +1,5 @@ Name:                HList-Version:             0.4.2.0+Version:             0.5.0.0 Category:            Data Synopsis:            Heterogeneous lists Description:         HList provides many operations to create and manipulate@@ -7,9 +7,13 @@                      types are known at compile-time. HLists are used to implement                     .                       * records+                    .                       * variants+                    .                       * type-indexed products (TIP)+                    .                       * type-indexed co-products (TIC)+                    .                       * keyword arguments                     .                      User code should import "Data.HList" or@@ -22,25 +26,20 @@  Data-files:          README, ChangeLog Cabal-version:       >= 1.10-Tested-With:         GHC==7.6.3, GHC==7.8.4, GHC==7.10.2+Tested-With:         GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.1, GHC==8.4.0.20180209 Build-Type:          Simple  Extra-Source-Files:-                     examples/*.hs,-                     examples/Properties/*.hs,                      examples/broken/*.hs,                      examples/broken/*.lhs,--                     examples/*.ref,-                      examples/broken/*.ref,                       Data/HList/broken/*.hs,                      Data/HList/obsolete/*.hs  Source-Repository head-    type: darcs-    location: http://code.haskell.org/HList+    type: git+    location: https://bitbucket.org/HList/hlist   flag new_type_eq@@ -55,9 +54,11 @@                See <https://ghc.haskell.org/trac/ghc/ticket/9918>  library-  Build-Depends:       base >= 4.6 && < 4.9,+  Build-Depends:       base >= 4.6 && < 4.12,                        -- for Typeable '[] and '(:) with ghc-7.6                        base-orphans,+                       -- Data.Semigroup for ghc < 8+                       semigroups,                        template-haskell,                        ghc-prim,                        mtl,@@ -69,6 +70,7 @@   Exposed-modules:     Data.HList,                        Data.HList.CommonMain,                        Data.HList.Data,+                       Data.HList.Dredge,                        Data.HList.FakePrelude,                        Data.HList.HArray,                        Data.HList.HCurry,@@ -119,6 +121,8 @@   Other-Extensions:    CPP                        TemplateHaskell                        OverlappingInstances+  if impl(ghc >= 8.0)+    Default-Extensions: UndecidableSuperClasses    if impl(ghc < 7.7)     Cpp-options:       -DOLD_TYPEABLE -DNO_CLOSED_TF@@ -136,27 +140,49 @@  Test-Suite examples   Type:     exitcode-stdio-1.0-  Ghc-Options: -threaded-  Main-Is: runexamples.hs+  Main-Is: HListExample.hs   Default-Language:    Haskell2010   Hs-Source-Dirs:  examples   Build-Depends:       base, hspec >= 1.7, directory, filepath,-                       process, syb, cmdargs, lens, HList, mtl+                       hspec-expectations,+                       process,+                       syb,+                       cmdargs,+                       lens,+                       HList,+                       mtl,+                       QuickCheck,+                       array,+                       semigroups,+                       template-haskell+  Other-Modules:+        Properties.Common++        HListExample.CmdArgs+        HListExample.Datatypes2+        HListExample.Labelable+        HListExample.MainGhcGeneric1+        HListExample.MainPosting051106+        HListExample.Prism+        HListExample.Pun+        HListExample.TIPTransform+        HListExample.TIPTransformM+   if impl(ghc > 7.9)     Ghc-Options: -fno-warn-tabs  Test-Suite doctests   Type:     exitcode-stdio-1.0   Ghc-Options: -threaded-  if impl(ghc <= 7.9)+  if impl(ghc <= 7.9 ) && impl(ghc <= 7.11)     -- doctests include things like :t pred . maxBound, which     -- depending on the ghc version, comes out as one of     -- (Bounded a, Enum a) => ...     -- (Enum b, Bounded b) => ...-    Buildable: False+    Build-Depends: base, doctest >= 0.8, process+  Buildable: False   Main-Is: rundoctests.hs   Hs-Source-Dirs:  examples-  Build-Depends: base, doctest >= 0.8, process   Default-Language:    Haskell2010  @@ -164,6 +190,7 @@   Type:     exitcode-stdio-1.0   Build-Depends: base,                  hspec >= 1.7,+                 hspec-expectations,                  HList,                  lens,                  mtl,@@ -171,6 +198,14 @@                  template-haskell,                  array,                  syb+  Other-Modules:+        Properties.Common+        Properties.KW+        Properties.LengthDependent+        Properties.LengthDependentSplice+        Properties.LengthIndependent   Main-Is:  Properties.hs   Hs-Source-Dirs: examples   Default-Language:    Haskell2010+  if impl(ghc <= 7.11)+        build-depends: semigroups
LensDefs.hs view
@@ -22,9 +22,25 @@ type Coercible a b = (() :: Constraint) #endif -simple :: p a (f a) -> p a (f a)-simple = id +type Equality' s a = forall p (f :: * -> *). a `p` f a -> s `p` f s++{- | if we write @f' = simple . f@, then the inferred type is++> f' :: (s ~ t, _) => Lens s t a b++which normally will let ghc figure out (a~b). However with the+types that come up in HList this can only be figure out with+concrete types, so we use isSimple instead which also specifies+(a~b).++-}+isSimple :: optic ~ (p a (f a) -> p s (f s)) => optic -> optic+isSimple = id+-- alternatively: isSimple x = simple . x . simple++simple :: Equality' a a+simple = id  -- Used by doctests (which should probably just import Control.Lens...) infixl 1 &
README view
@@ -11,18 +11,19 @@  Getting the code -> darcs get http://code.haskell.org/HList+> git clone https://bitbucket.org/HList/hlist HList  ----------------------------------------------------------------------  Pushing changes -You need an account at code.haskell.org+You need an account at bitbucket.org  > cd HList-> darcs pull user@code.haskell.org:/srv/darcs/HList-> darcs record-> darcs push+> git clone git@bitbucket.org:HList/hlist.git+> git pull+> git commit --interactive+> git push  ---------------------------------------------------------------------- @@ -35,17 +36,18 @@ since doing so would have implied inclusion of substantial packages, namely the underlying infrastructure for database access library. -You can get HList from Hackage or from Darcs:+You can get HList from Hackage or from bitbucket:  $ cabal update && cabal install HList  Or: -$ darcs get --partial http://code.haskell.org/HList/+$ git clone https://bitbucket.org/HList/hlist HList $ cd HList; cabal install  The code works --- within the limits exercised in the source files ----for GHC-7.6 and GHC-7.8 and GHC-7.10. Older compilers are not supported.+for GHC-7.6, 7.8, 7.10, 8.2 and 8.4.0.20180209.+Older compilers are not supported.  One may run "cabal test" to check the distribution. 
− examples/Cabal.hs
@@ -1,50 +0,0 @@-{-# LANGUAGE CPP #-}-module Cabal where--import System.Process-import System.Exit-import Control.Monad---- | > cabal args stdin = readProcessWithExitCode "cabal" args stdin------ except it also tries to runghc Setup which can succeed (because--- if things have been configured with runghc Setup, then a different--- version of the Cabal library is chosen and cabal complains instead--- of reconfiguring / using an older Cabal library-cabal :: [String] -> String-  -> IO (ExitCode, String, String)-cabal args stdin = do-#if __GLASGOW_HASKELL__ > 707-  cabalRepl @ (ec, _, _) <- readProcessWithExitCode "cabal" args stdin-  if ec == ExitSuccess then return cabalRepl-    else do-      runghcRepl @ (ec2, _, _) <- readProcessWithExitCode "runghc" ("Setup.lhs":args) stdin-      when (ec2 /= ExitSuccess) $ do-        putStrLn "Could not \"cabal ...\" (exitCode,stdout,stderr):"-        print cabalRepl-        putStrLn "Could not \"runghc Setup ...\" (exitCode,stdout,stderr):"-        print runghcRepl--        putStrLn "\"...\" above is "-        putStrLn "Command:"-        print ("cabal" : args)-        putStrLn "stdin:"-        print stdin-        return ()--      return runghcRepl-#else-  -- we don't have a cabal repl (at least if we're using the Cabal that ghc-  -- comes with), so read a file written by the ./Setup build-  "repl" : tgt : args <- return args-  ghc : rest <- lines `fmap` readFile ("dist/build/autogen/Build_" ++ tgt ++ ".flags")-  let args2 = "--interactive"-                                : "-v"-                                : "-package-db" : "dist/package.conf.inplace"-                                : concatMap words rest ++ args--      args3 = case break (=="--ghc-options") args2 of-                  (a, _:_:b) -> a ++ b-  print args3-  readProcessWithExitCode ghc args3 stdin-#endif
− examples/Datatypes1.hs
@@ -1,14 +0,0 @@-module Datatypes1 where---- The fout-n-mouth example--newtype Key     = Key Integer-                deriving (Show,Eq,Ord)-newtype Name   = Name String-                deriving (Show,Eq)-data Breed     = Cow | Sheep-                deriving (Show,Eq)-newtype Price  = Price Float-                deriving (Show,Eq,Ord)-data Disease   = BSE | FM-                deriving (Show,Eq)
− examples/Datatypes2.hs
@@ -1,19 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}--module Datatypes2 where--import Data.Typeable---- The fout-n-mouth example--- (deriving Typeable only supported for GHC)--newtype Key     = Key Integer-                deriving (Show,Eq,Ord,Typeable)-newtype Name   = Name String-                deriving (Show,Eq,Typeable)-data Breed     = Cow | Sheep-                deriving (Show,Eq,Typeable)-newtype Price  = Price Float-                deriving (Show,Eq,Ord,Typeable)-data Disease   = BSE | FM-                deriving (Show,Eq,Typeable)
− examples/FooBar.hs
@@ -1,27 +0,0 @@-{-# OPTIONS -fglasgow-exts #-}-{-# OPTIONS -fallow-undecidable-instances #-}-{-# OPTIONS -fallow-overlapping-instances #-}--data Foo x y-class Bar x y | x -> y-class Zoo x y | x -> y--{---Works for both GHC and Hugs--instance Bar (Foo x y) y-instance Bar (Foo (Foo x y) z) z---}--{---Works for GHC but not Hugs---}--instance Zoo x r => Bar (Foo x y) r-instance Zoo x r => Bar (Foo (Foo x y) z) r--
+ examples/HListExample.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}++-- tests based on HListExample+module Main (main) where+++import Test.Hspec+++import HListExample.Labelable+import HListExample.CmdArgs+import HListExample.MainGhcGeneric1+-- import HListExample.MainPosting040607+import HListExample.MainPosting051106+import HListExample.Prism+import HListExample.Pun+import HListExample.TIPTransform+import HListExample.TIPTransformM+++main = hspec $ do+  mainCmdargs+  mainLabelable+  mainGhcGeneric1+  mainPosting051106+  mainPrism+  mainPun+  mainTIPTransform+  mainTTIPM++++++
+ examples/HListExample/CmdArgs.hs view
@@ -0,0 +1,146 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE TemplateHaskell #-}+module HListExample.CmdArgs where+++import Data.Generics+import Control.Lens+import Test.Hspec+import Properties.Common++import Data.HList.CommonMain++import System.Console.CmdArgs (cmdArgs)+import System.Environment (withArgs)+++{-++An example showing off the data instance for Record / Variant / TIP / TIC++Also a use of cmdArgs++Note that ghc-7.8.2 does not have (or can produce) instances of typeable+for types of kind Symbol (ie. promoted strings):+<https://ghc.haskell.org/trac/ghc/ticket/9111>, so for now use the Label3+style++-}++#define USE_LABEL3 __GLASGOW_HASKELL__ == 708++#if USE_LABEL3+makeLabels3 "examples_cmdargs" (words "x y z tic")+makeLabels3 "optV" (words "optA optB optC")+#else+makeLabels6 (words "x y z tic")+makeLabels6 (words "optA optB optC")+#endif++makeLabelable "abc df"++#if USE_LABEL3+v = (optA .*. optB .*. optC .*. emptyProxy)+      `zipTagged` (Proxy :: Proxy '[Int,Char,Double])+#else+v = Proxy :: Proxy '[Tagged "optA" Int, Tagged "optB" Char, Tagged "optC" Double]+#endif++type Z' = TagR [Int, Char, Double]+-- type Z' = [Tagged Int Int, Tagged Char Char, Tagged Double Double]++d0 = x .=. (5 :: Int)+    .*. y .=. True+    .*. z .=. mkVariant optC (1 :: Double) v+    .*. tic .=. mkTIC' 'x' (Proxy :: Proxy Z')+    .*. emptyRecord++-- the equivalent ordinary record for reference+data E = E { a :: Int, b :: Bool }+    deriving (Show, Data, Typeable)++data Opt = OptA Int | OptB Char | OptC Double+    deriving (Show, Data, Typeable)++e0 = E 5 True++mainCmdargs = describe "cmdargs/Data" $ do+  it "variant show" $+    mkVariant optC 1 v `shouldShowTo` "V{optC=1.0}"++  -- increment V{optC=1.0} via data instance+  it "gmapT" $+    gmapT (mkT ((+1) :: Double -> Double)) (mkVariant optC 1 v)+     `shouldShowTo` "V{optC=2.0}"++  it "d0" $+    d0 `shouldShowTo`+      "Record{x=5,y=True,z=V{optC=1.0},tic=TIC{char='x'}}"++  it "modify d0's Bool children" $+    gmapT (mkT not) d0 `shouldShowTo`+      "Record{x=5,y=False,z=V{optC=1.0},tic=TIC{char='x'}}"++  it "modify d0's Int children" $+    gmapT (mkT (+(1::Int))) d0 `shouldShowTo`+      "Record{x=6,y=True,z=V{optC=1.0},tic=TIC{char='x'}}"++  it "modify d0's Char children (none)" $+    gmapT (mkT (succ :: Char -> Char)) d0 `shouldShowTo`+      "Record{x=5,y=True,z=V{optC=1.0},tic=TIC{char='x'}}"++  it "modify d0's Char grandchildren" $+    everywhere (mkT (succ :: Char -> Char)) d0 `shouldShowTo`+      "Record{x=5,y=True,z=V{optC=1.0},tic=TIC{char='y'}}"++#if __GLASGOW_HASKELL__ != 706+  --  ghc-7.6.3 fails with all uses of dredge:+  --     Kind incompatibility when matching types:+  --    Const (Data.Monoid.First Double) Double :: AnyK+  --    Const (Data.Monoid.First Double) Double :: *++  it "dredge optC" $+    d0 & dredge optC +~ 1 `shouldShowTo`+      "Record{x=5,y=True,z=V{optC=2.0},tic=TIC{char='x'}}"+#endif++  -- theB is like a TIP the unsafe lookup function applied+  let theB :: Typeable a => a+      theB = error "theB"+            `extB` (1::Int)+            `extB` True+            `extB` (2.5::Double)+            `extB` 'b'+            `extB` mkVariant optC theB v+            `extB` mkTIC' (theB :: Char) (Proxy :: Proxy Z')++  it "fromConstrB" $+    fromConstrB theB undefined `asTypeOf` d0 `shouldShowTo`+      "Record{x=1,y=True,z=V{optC=2.5},tic=TIC{char='b'}}"++  it "cmdargs built-in data" $+    withArgs ["-a=4", "-b=False" ] (cmdArgs e0) `shouldReturnShowTo`+        "E {a = 4, b = False}"++  -- drop the tic and variant-containing fields: cmdargs doesn't support+  -- it. Cmdargs doesn't support fields containing+  -- `data Opt = OptA Int | OptB Char` either+  let dRec = d0 & from hListRecord %~ (hInit . hInit)++  it "dRec" $+    dRec `shouldShowTo`+      "Record{x=5,y=True}"++  it "cmdargs Record" $+    withArgs ["-x=4", "-y=False"] (cmdArgs dRec) `shouldReturnShowTo`+      "Record{x=4,y=False}"+
+ examples/HListExample/Datatypes2.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE DeriveDataTypeable #-}++module HListExample.Datatypes2 where++import Data.Typeable++-- The fout-n-mouth example+-- (deriving Typeable only supported for GHC)++newtype Key     = Key Integer+                deriving (Show,Eq,Ord,Typeable)+newtype Name   = Name String+                deriving (Show,Eq,Typeable)+data Breed     = Cow | Sheep+                deriving (Show,Eq,Typeable)+newtype Price  = Price Float+                deriving (Show,Eq,Ord,Typeable)+data Disease   = BSE | FM+                deriving (Show,Eq,Typeable)
+ examples/HListExample/Labelable.hs view
@@ -0,0 +1,64 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts, TemplateHaskell, DataKinds, PolyKinds,+  GADTs, ConstraintKinds #-}+{- | Demonstrates @hLens'@++may be worthwhile to have a lens-free test suite, doing stuff like:++> case x (Identity  . (++"there")) r of Identity t -> t++-}+module HListExample.Labelable where+import Data.HList.CommonMain+import Control.Lens++import Text.Read++import Properties.Common+import Test.Hspec+++makeLabelable "lbX lbY"++#if __GLASGOW_HASKELL__ < 707+#define INT_SIG_76 :: Int+#else+#define INT_SIG_76+#endif++r = lbX .==. "hi" .*.+    lbY .==. (lbY .==. 321 .*. lbX .==. 123 .*. emptyRecord) .*.+    emptyRecord++mainLabelable = describe "labelable" $ do+  it "lookup" $ do+    r ^. lbX      `shouldShowTo` "\"hi\""++    -- ghc-7.6 doesn't default when r is involved lower down,+    -- while 7.8.2 does+    (r ^. lbY . lbY  INT_SIG_76) `shouldShowTo` "321"+    (r ^. lbY . lbX  INT_SIG_76) `shouldShowTo` "123"++  it "modify" $ do+    r & lbX .~ () `shouldShowTo`+        "Record{lbX=(),lbY=Record{lbY=321,lbX=123}}"++    r & lbY . lbY .~ "xy" `shouldShowTo`+        "Record{lbX=\"hi\",lbY=Record{lbY=\"xy\",lbX=123}}"++  it "read/show" $ do+    let rString = "Record{lbX=\"hi\",lbY=Record{lbY=321,lbX=123}}"++    r `shouldShowTo` rString++    readMaybe rString `asTypeOf` Just r+        `shouldBe` Just r++    -- the read instance does not reorder labels+    let rStringPerm = "Record{lbY=Record{lbY=321,lbX=123},lbX=\"hi\"}"+    readMaybe rStringPerm `asTypeOf` Just r+        `shouldBe` Nothing++    -- but we can reorder this way+    (r ^. rearranged) `asTypeOf` (undefined :: Record '[Tagged "lbY" t, Tagged "lbX" s])+        `shouldShowTo` rStringPerm
+ examples/HListExample/MainGhcGeneric1.hs view
@@ -0,0 +1,288 @@+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}++{-++   (C) 2004, Oleg Kiselyov, Ralf Laemmel, Keean Schupke++   This is a main module for exercising a model with generic type+   cast and generic type equality.++-}++module HListExample.MainGhcGeneric1 (mainGhcGeneric1) where++import HListExample.Datatypes2+import Data.HList.CommonMain+import Control.Lens++import Properties.Common+import Test.Hspec++import Control.Monad.Writer++-- --------------------------------------------------------------------------++type Animal =  '[Key,Name,Breed,Price]++angus :: HList Animal+angus =  HCons (Key 42)+           (HCons (Name "Angus")+           (HCons  Cow+           (HCons (Price 75.5)+            HNil)))++tlist1 = hFoldr (HSeq HPrint) (return () :: IO ()) angus++testBasic = do+  it "basic" $ do+    -- tlist1 does IO. The equivalent using Writer+    let f = HSeq $ HComp (tell . (:[])) HShow+        f2 = Fun (tell . (:[]) . show) :: Fun Show (Writer [String] ())++        angusStr = ["Key 42",  "Name \"Angus\"", "Cow", "Price 75.5" ]++    execWriter (hFoldr f (return ()) angus) `shouldBe`+        angusStr++    execWriter (hFoldr (HSeq f2) (return ()) angus) `shouldBe`+        angusStr+++    hAppend angus angus `shouldShowTo` +      "H[Key 42,Name \"Angus\",Cow,Price 75.5,Key 42,Name \"Angus\",Cow,Price 75.5]"+++testHArray = do+  it "HArray" $ do+    hProjectByHNats (hNats (HCons hZero (HCons hZero HNil))) angus `shouldShowTo`+      "H[Key 42]"++      -- Before:+      -- H[Key 42, Key 42]+      -- XXX I don't duplicate at present!+    hProjectByHNats (hNats (HCons hZero (HCons (hSucc hZero) HNil))) angus `shouldShowTo`+      "H[Key 42,Name \"Angus\"]"++    hProjectByHNats (undefined::Proxy ['HZero, 'HSucc 'HZero]) angus `shouldShowTo`+      "H[Key 42,Name \"Angus\"]"++    hProjectAwayByHNats (hNats (HCons hZero HNil)) angus `shouldShowTo`+      "H[Name \"Angus\",Cow,Price 75.5]"++    hSplitByHNats +	    (undefined::Proxy ['HZero, 'HSucc 'HZero])+	    angus+      `shouldShowTo`+      "(H[Key 42,Name \"Angus\"],H[Cow,Price 75.5])"+++  it "HOccurs" $ do+    (hOccurs angus :: Breed) `shouldShowTo` "Cow"+    hOccurs angus `shouldBe` Cow++    hOccurs (hBuild 1 ^. from tipHList) `shouldShowTo` "1"++    (null $ hOccurs $ hBuild [] ^. from tipHList) `shouldBe` True+    (hProject angus :: HList '[Key, Name]) `shouldShowTo`+      "H[Key 42,Name \"Angus\"]"+++  it "TypeIndexed" $ do+    let typeIdx1 = hDeleteMany (undefined::Proxy Name) angus+        typeIdx2 = BSE .*. angus+    typeIdx1 `shouldShowTo` "H[Key 42,Cow,Price 75.5]"+    typeIdx2 `shouldShowTo` "H[BSE,Key 42,Name \"Angus\",Cow,Price 75.5]"++    hUpdateAt Sheep typeIdx1 `shouldShowTo`+      "H[Key 42,Sheep,Price 75.5]"+  +    hDeleteAt (undefined::Proxy Breed) typeIdx2 `shouldShowTo`+      "H[BSE,Key 42,Name \"Angus\",Price 75.5]"++    hProjectBy (undefined::Proxy '[Breed]) angus `shouldShowTo` "H[Cow]"++    hProject angus `shouldBe` HCons Cow HNil++    -- doesn't work+    -- hProjectBy Proxy angus `shouldBe` HCons Cow HNil++    hSplitBy (undefined:: Proxy '[Breed]) angus `shouldShowTo`+      "(H[Cow],H[Key 42,Name \"Angus\",Price 75.5])"++testTIP = do+  -- |+  -- This example from the TIR paper challenges singleton lists.+  -- Thanks to the HW 2004 reviewer who pointed out the value of this example.+  -- We note that the explicit type below is richer than the inferred type.+  -- This richer type was needed for making this operation more polymorphic.+  -- That is, /a)/ would not work without the explicit type, +  -- while /b/ would:+  --+  -- >  a)  ((+) (1::Int)) $ snd $ tuple oneTrue+  -- >  b)  ((+) (1::Int)) $ fst $ tuple oneTrue+  --+  -- As of 2014, type signatures are not needed to define tipyTuple.+  it "tipyTuple" $ do+    let tuple l = tipyTuple l++        -- oneTrue :: TIP (TagR [Int, Bool])		-- inferred+        -- oneTrue :: TIP '[Tagged Int Int, Tagged Bool Bool] -- expanded out+        oneTrue = (1::Int) .*. True .*. emptyTIP++    case tuple oneTrue of+      (a,b) -> (a+(1::Int), not b) `shouldShowTo` "(2,False)"++    not (fst (tuple oneTrue)) `shouldShowTo` "False"+    tuple oneTrue `shouldBe` (1::Int,True)++    (((+) (1::Int)) $ fst $ tuple oneTrue) `shouldBe` 2+    (((+) (1::Int)) $ snd $ tuple oneTrue) `shouldBe` 2+++  it "tip" $ do+    hOccurs myTipyCow `shouldBe` Cow+    (BSE .*. myTipyCow) `shouldShowTo` "TIPH[BSE,Key 42,Name \"Angus\",Cow,Price 75.5]"+    -- (Sheep .*. myTipyCow) `shouldBe`  _+    {- if we uncomment the line above, we get the type error+       about the violation of the TIP condition: Breed type+       occurs twice.++      No instance for (Fail * (TypeFound Breed))+    -}++    (Sheep .*. hDeleteAtLabel (Label :: Label Breed) myTipyCow)+        `shouldShowTo` "TIPH[Sheep,Key 42,Name \"Angus\",Price 75.5]"++    (Sheep .*. (myTipyCow .-. (Label :: Label Breed)))+        `shouldShowTo` "TIPH[Sheep,Key 42,Name \"Angus\",Price 75.5]"++    tipyUpdate Sheep myTipyCow+        `shouldShowTo` "TIPH[Key 42,Name \"Angus\",Sheep,Price 75.5]"+++++myTipyCow = tipHList # angus -- lens #++animalKey :: ( SubType l (TIP Animal) -- explicit+             , HOccurs Key l          -- implicit+             ) => l -> Key+animalKey = hOccurs++animalish :: SubType l (TIP Animal) => l -> l+animalish = id+animalKey' l = hOccurs (animalish l) :: Key+++makeLabels3 "MyNS" (words "key name breed price")+{- ^ makeLabels3 generates something like+data MyNS = MyNS -- a name space for record labels++key   = firstLabel MyNS  (undefined::DKey)+name  = nextLabel  key   (undefined::DName)+breed = nextLabel  name  (undefined::DBreed)+price = nextLabel  breed (undefined::DPrice)++data DKey;   instance Show DKey   where show _ = "key"+data DName;  instance Show DName  where show _ = "name"+data DBreed; instance Show DBreed where show _ = "breed"+data DPrice; instance Show DPrice where show _ = "price"++-}++unpricedAngus =  key    .=. (42::Integer)+             .*. name   .=. "Angus"+             .*. breed  .=. Cow+             .*. emptyRecord+++testRecords = describe "testRecords" $ it "tests" $ do++  unpricedAngus `shouldShowTo` "Record{key=42,name=\"Angus\",breed=Cow}"+  unpricedAngus .!. breed `shouldShowTo` "Cow"++  let test3 = hDeleteAtLabel breed unpricedAngus++  test3+    `shouldShowTo` "Record{key=42,name=\"Angus\"}"++  (breed .=. Sheep .@. unpricedAngus)+    `shouldShowTo` "Record{key=42,name=\"Angus\",breed=Sheep}"++  let test4 = price .=. 8.8 .*. unpricedAngus++  test4+    `shouldShowTo` "Record{price=8.8,key=42,name=\"Angus\",breed=Cow}"++  hProjectByLabels (labelsOf (breed `HCons` price `HCons` HNil)) test4+    `shouldShowTo` "Record{price=8.8,breed=Cow}"++  -- XXX extra Label shouldn't be needed?+  -- alternatively it could be a compile-time error...+  -- hProjectByLabels (hEndP $ hBuild breed price) test4+  --  `shouldShowTo` "Record{price=8.8,breed=Cow}"++  -- test7 should be the same as test4 but+  -- with the different order of labels+  (newLVPair breed Sheep) .*. test3+    `shouldShowTo` "Record{breed=Sheep,key=42,name=\"Angus\"}"+++type AnimalCol = TagR [Key,Name,Breed,Price]+++testTIC = describe "TIC" $ do+  it "show" $+    (myCol :: TIC AnimalCol) `shouldShowTo` "TIC{breed=Cow}"+  it "hOccurs found" $+    (hOccurs myCol :: Maybe Breed) `shouldBe` Just Cow+  it "hOccurs absent" $+    (hOccurs myCol :: Maybe Price) `shouldBe` Nothing++myCol = mkTIC Cow :: TIC AnimalCol+{-++*TIC> mkTIC "42" :: TIC AnimalCol+Type error ...++*TIC> hOccurs myCol :: Maybe String+Type error ...++-- both of the these type errors could be better+-- (on ghc-7.10.3), Any is used to satisfy FD coverage condition, but the+-- TypeError context should be printed instead+<interactive>:170:1:+    Couldn't match type ‘Data.HList.CommonMain.Any’ with ‘[Char]’+    In the expression: mkTIC "42" :: TIC AnimalCol+    In an equation for ‘it’: it = mkTIC "42" :: TIC AnimalCol+-}++testVariant = describe "Variant" $ it "test" $ do+    testVar1 `shouldShowTo` "V{name=\"angus\"}"+    (testVar1 .!. key) `shouldBe` Nothing+    (testVar1 .!. name) `shouldBe` Just "angus"+ where+  testVar1 = mkVariant name "angus" animalVar++animalVar = asProxy $+               key   .=. (undefined :: Integer)+           .*. name  .=. (undefined :: String)+           .*. breed .=. (undefined :: Breed)+           .*. emptyRecord+++asProxy :: proxy a -> Proxy a+asProxy _ = Proxy++mainGhcGeneric1 = describe "mainGhcGeneric1" $ do+  testBasic+  testHArray+  testTIP+  testRecords+  testTIC+  testVariant
+ examples/HListExample/MainPosting051106.hs view
@@ -0,0 +1,203 @@+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+module HListExample.MainPosting051106 where++-- Needed for a reply to the Haskell mailing list++import Data.HList.CommonMain hiding (Comp(..))+import Properties.Common+import Test.Hspec++mainPosting051106 = describe "hComposeList (a -> H[a -> b,b -> c,c -> d] -> d)" $ do+    it "defined here" $+        comp "abc" `shouldShowTo` "8"++    it "defined in HList" $+        hComposeList test2 "abc" `shouldShowTo` "8"++test = HCons (length::String -> Int) (HCons ((+1)::(Int->Int)) (HCons ((*2)::(Int->Int)) HNil))+test2 = length .*. (+1) .*. (*2) .*. HNil++data Comp++{- simpler class. wouldn't work with test2. The original HFoldr won't work with+ - Apply anymore.+instance Apply Comp (x -> y,y -> z)+ where+  type ApplyR Comp (x -> y,y -> z) = x -> z+  apply _ (f,g) = g . f+  -}++-- `~` is (built-in) TypeCast mentioned below+instance ((x -> y,y -> z) ~ xyz, (x -> z) ~ xz)+    => ApplyAB Comp xyz xz+ where+  applyAB _ (f,g) = g . f++-- Function composition based on type code works.++comp  = hFoldr (undefined::Comp) (id::Int -> Int) test++-- Function composition based on normal polymorphism doesn't+-- comp' = hFoldr (uncurry (flip (.))) (id::Int -> Int) test++{-++From Ralf.Lammel at microsoft.com  Mon Nov  7 00:11:01 2005+From: Ralf.Lammel at microsoft.com (Ralf Lammel)+Date: Sun Nov  6 23:50:27 2005+Subject: [Haskell-cafe] Type classes and hFoldr from HList+Message-ID: <1152E22EE8996742A7E36BBBA7768FEE079C474F@RED-MSG-50.redmond.corp.microsoft.com>++Hi Greg,++Since hfoldr is right-associative, I prefer to reorder your list of+functions as follows:++> test = HCons (length::String -> Int) (HCons ((+1)::(Int->Int)) (HCons+((*2)::(Int->Int)) HNil))++Note that I also annotated length with its specific type.+(If you really wanted to leave things more polymorphic, you would need+to engage in TypeCast.)++Providing a specific Apply instance for (.) is not necessary, strictly+necessary. We could try to exploit the normal function instance for+Apply.++Let me recall that one here for convenience:++>instance Apply (x -> y) x y+> where+>  apply f x = f x++Let me also recall the hFoldr instances:++>class HList l => HFoldr f v l r | f v l -> r+> where+>  hFoldr :: f -> v -> l -> r++>instance HFoldr f v HNil v+> where+>  hFoldr _ v _ = v++>instance ( HFoldr f v l r+>         , Apply f (e,r) r'+>         )+>      => HFoldr f v (HCons e l) r'+> where+>  hFoldr f v (HCons e l) = apply f (e,hFoldr f v l)+++To fit in (.), we would flip and uncurry it.+So we could try:++comp' = hFoldr (uncurry (flip (.))) (id::Int -> Int) test++This wouldn't work.+The trouble is the required polymorphism of the first argument of+hFoldr.+The type of that argument as such is polymorphic.+However, this polymorphism does not survive type class parameterization.+You see this by looking at the HCons instance of HFoldr.+The different occurrences of "f" would need to be used at different+types.+This would only work if the type class parameter f were instantiated by+the polymorphic type of (uncurry (flip (.))). (And even then we may need+something like TypeCast.)++What you can do is define a dedicated *type code* for composition.++comp  = hFoldr (undefined::Comp) (id::Int -> Int) test++data Comp++instance Apply Comp (x -> y,y -> z) (x -> z)+ where+  apply _ (f,g) = g . f+++Ralf+++> -----Original Message-----+> From: haskell-cafe-bounces@haskell.org [mailto:haskell-cafe-+> bounces@haskell.org] On Behalf Of Greg Buchholz+> Sent: Sunday, November 06, 2005 7:01 PM+> To: haskell-cafe@haskell.org+> Subject: [Haskell-cafe] Type classes and hFoldr from HList+> +> +>   I was playing around with the HList library from the paper...+> +>     Strongly typed heterogeneous collections+>     http://homepages.cwi.nl/~ralf/HList/+> +> ...and I thought I'd try to fold the composition function (.) through+a+> heterogeneous list of functions, using hFoldr...+> +> >{-# OPTIONS -fglasgow-exts #-}+> >{-# OPTIONS -fallow-undecidable-instances #-}+> >+> >import CommonMain+> >+> >main = print $ comp "abc"+> >+> >test = HCons ((+1)::(Int->Int)) (HCons ((*2)::(Int->Int)) (HCons+length+> HNil))+> >+> >comp = hFoldr (.) id test+> >+> >instance Apply (a -> b -> c -> d) (a, b) (c -> d)+> >    where+> >        apply f (a,b) = f a b+> +> ...but it fails with the following type error...+> +> ]Compiling Main             ( compose.hs, interpreted )+> ]+> ]compose.hs:10:7:+> ]    No instances for (Apply ((b -> c) -> (a -> b) -> a -> c)+> ]                            (Int -> Int, r)+> ]                            ([Char] -> a3),+> ]                      Apply ((b -> c) -> (a -> b) -> a -> c) (Int ->+Int,+> r1) r,+> ]                      Apply ((b -> c) -> (a -> b) -> a -> c) ([a2] ->+> Int, a1 ->a1) r1)+> ]      arising from use of `hFoldr' at compose.hs:10:7-12+> ]    Probable fix:+> ]      add an instance declaration for (Apply ((b -> c) -> (a -> b) ->+a -+> > c)+> ]                                             (Int -> Int, r)+> ]                                             ([Char] -> a3),+> ]                                       Apply ((b -> c) -> (a -> b) ->+a -+> > c)+> ](Int -> Int, r1) r,+> ]                                       Apply ((b -> c) -> (a -> b) ->+a -+> > c)+> ]([a2] -> Int, a1 -> a1) r1)+> ]    In the definition of `comp': comp = hFoldr (.) id test+> +> ...Anyway, I couldn't quite tell whether I was using hFoldr+incorrectly,+> or if I needed to have more constraints placed on the construction of+> "test", or if needed some sort of type-level function that resolves...+> +> Apply ((b -> c) -> (a -> b) -> a -> c)+> +> ...into (a -> c), or something else altogether.  I figured someone+might+> be able to help point me in the right direction.++-}
+ examples/HListExample/Prism.hs view
@@ -0,0 +1,126 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE QuasiQuotes #-} -- for pun+{-# LANGUAGE TemplateHaskell #-}+module HListExample.Prism where+++import Test.Hspec+import Properties.Common++import Data.HList.CommonMain+import Data.HList.Labelable (hLens')+import Control.Lens++-- generate left = Label :: Label "left"+makeLabels6 (words "left right up down")++--- define the Labelable labels manually+left_ = hLens' left+right_ = hLens' right+up_ = hLens' up+down_ = hLens' down++-- this definition is needed to decide what order+-- to put the fields in, as well as their initial types+r = [pun|right left up|] where+  left = 'a'+  right = 2 :: Int+  up = 2.3 :: Double++r2 = down_ .==. v .*. r++v = mkVariant left 'x' r++mainPrism = do+  it "inspect v with hPrism" $ do+    v ^? hPrism left `shouldShowTo` "Just 'x'"+    v ^? hPrism right `shouldBe` Nothing+    v ^? hPrism up `shouldBe` Nothing+    v2 ^? hPrism left `shouldShowTo` "Just ()"++  it "inspect v with hPrism through Labelable" $ do+    v ^? left_ `shouldShowTo` "Just 'x'"+    v ^? right_ `shouldBe` Nothing+    v ^? up_ `shouldBe` Nothing+    v2 ^? left_ `shouldShowTo` "Just ()"++  it "Setting the missing tag does nothing" $ do+    set right_ () v `shouldShowTo` "V{left='x'}"++    set _Right () (Left 'x') -- prisms for Either do the same thing+      `shouldShowTo` "Left 'x'"++  it "compose prism" $ do+    v3 ^? up_.up_ `shouldBe` Nothing+    v3 ^? left_ `shouldShowTo` "Just 'x'"++    v4 ^? left_.left_ `shouldShowTo` "Just \"leftleft\""++  it "compose lens.prism" $ do+    r2 ^? down_.left_ `shouldShowTo` "Just 'x'"+    r2 ^? down_.right_ `shouldBe` Nothing++    let du = down_.up_+    r2 ^? du `shouldBe` Nothing++  it "extension" $ do+    v5 ^? down_ `shouldBe` Just "hi"+    v6 ^? down_ `shouldBe` Just "hi"+    v7 ^? down_ `shouldBe` Nothing+    v7 ^? left_ `shouldBe` Just 'x'++  it "show" $ do+    vs `shouldShowTo`+        "Record{v=V{left='x'},\+        \v2=V{left=()},\+        \v2'=V{left=()},\+        \v3=V{left='x'},\+        \v4=V{left=V{left=\"leftleft\"}},\+        \v5=V{down=\"hi\"},\+        \v6=V{down=\"hi\"},\+        \v7=V{left='x'}}"++    -- works in ghci. Probably need -XExtendedDefaultRules+    -- wX `shouldShowTo` "V{x='a'}"+    -- wY `shouldShowTo` "V{y=2.5}"+    [wX,wY] `shouldShowTo` "[V{x='a'},V{y=2.5}]"++  -- :t wX+  -- > wX :: Variant '[Tagged "x" Char, Tagged "y" y]+  --+  -- > :t wY+  -- > wY :: Variant '[Tagged "x" x, Tagged "y" Double]+  --+  -- ghc doesn't need to decide on a type for values that+  -- have no influence on the final result+  it "type partly defined" $ do+    wX ^? hLens' (Label :: Label "x")+        `shouldShowTo` "Just 'a'"+    wY ^? hLens' (Label :: Label "y")+        `shouldShowTo` "Just 2.5"+  ++wX = mkVariant (Label :: Label "x") 'a' wProto+wY = mkVariant (Label :: Label "y") (2.5 :: Double) wProto++wProto = undefined :: Record+  '[Tagged "x" x, Tagged "y" y]++vs = [pun| v v2 v2' v3 v4 v5 v6 v7 |]++-- note that we can change the type of the 'x' field+-- from Char to ()+v2 = set (hPrism left) () v+++-- or with the "better" label+v2' = set left_ () v+++v3 = v & up_ .~ v & up_.up_ .~ "upup"+v4 = v & left_ .~ v & left_.left_ .~ "leftleft"+v5 = down .=. Just "hi" .*. v+v6 = down_ .==. Just "hi" .*. v+v7 = down .=. (Nothing :: Maybe String) .*. v
+ examples/HListExample/Pun.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE ViewPatterns #-}+-- more examples for record puns+module HListExample.Pun where+import Data.HList.CommonMain++import Test.Hspec+import Properties.Common++makeLabels6 (words "a b c")+++r  = c .=. "c" .*. b .=. (a .=. 3 .*. emptyRecord) .*. emptyRecord+r2 = b .=. (a .=. 1 .*. emptyRecord) .*. emptyRecord+++p1 ( (.!. b) -> (b @ ((.!. a) -> a))) = (a,b)++p2 [pun| b @ {a} |] = (a, b)++-- same as p2, but gives a warning+-- p3 [pun| b @ a |] = (a, b)++p4 [pun| b{a} |] = a -- b is not bound++-- adds `x' and `y' into a field called r+e1 = let x = 1; y = "hi" in [pun| r @ { x y } |]++-- updates the `c' field+e2 = let c = 1; y = "hi" in [pun| r @ { c y } |]++-- same as e1, but doesn't use a pre-existing r+e3 = let x = 1; y = "hi" in [pun| r { x y } |]+++mainPun = describe "pun quasiquoter" $ do+  it "pattern" $ do+        p1 r `shouldShowTo` "(3,Record{a=3})"+        p2 r `shouldShowTo` "(3,Record{a=3})"+        p4 r `shouldBe` 3++  it "expression" $ do+        e1 `shouldShowTo` "Record{r=Record{x=1,y=\"hi\",c=\"c\",b=Record{a=3}}}"+        e2 `shouldShowTo` "Record{r=Record{c=1,y=\"hi\",b=Record{a=3}}}"+        e3 `shouldShowTo` "Record{r=Record{x=1,y=\"hi\"}}"+
+ examples/HListExample/TIPTransform.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}+{-# LANGUAGE ScopedTypeVariables, UndecidableInstances #-}++-- Transforming a TIP: applying to a TIP a (polyvariadic) function+-- that takes arguments from a TIP and updates the TIP with the result.+-- +-- In more detail: we have a typed-indexed collection TIP and we+-- would like to apply a transformation function to it, whose argument+-- types and the result type are all in the TIP. The function should locate+-- its arguments based on their types, and update the TIP+-- with the result. The function may have any number of arguments,+-- including zero; the order of arguments should not matter.++-- The problem was posed by Andrew U. Frank on Haskell-Cafe, Sep 10, 2009.+-- http://www.haskell.org/pipermail/haskell-cafe/2009-September/066217.html+-- The problem is an interesting variation of the keyword argument problem.++module HListExample.TIPTransform where++import Data.HList.CommonMain+import Data.Typeable++import Properties.Common+import Test.Hspec++-- We start with the examples++newtype MyVal = MyVal Int deriving (Show, Typeable)++-- or if no typeable, use+-- instance ShowLabel MyVal where showLabel _ = "MyVal"++tip1 = MyVal 20 .*. (1::Int) .*. True .*. emptyTIP+++mainTIPTransform = describe "tipTransform" $ it "all" $ do+  tip1 `shouldShowTo` "TIPH[MyVal 20,1,True]"++  -- Update the Int component of tip1 to 2. The Int component must+  -- exist. Otherwise, it is a type error+  ttip (2::Int) tip1 `shouldShowTo`+        "TIPH[MyVal 20,2,True]"++  -- Negate the boolean component of tip1+  ttip not tip1 `shouldShowTo`+        "TIPH[MyVal 20,1,False]"++  -- Update the Int component from the values of two other components+  ttip (\(MyVal x) y -> x+y) tip1 `shouldShowTo`+    "TIPH[MyVal 20,21,True]"++  -- Update the MyVal component from the values of three other components+  ttip (\b (MyVal x) y -> MyVal $ if b then x+y else 0) tip1+        `shouldShowTo`+        "TIPH[MyVal 21,1,True]"++  -- The same but with the permuted argument order.+  -- The order of arguments is immaterial: the values will be looked up using+  -- their types+  ttip (\b y (MyVal x)-> MyVal $ if b then x+y else 0) tip1+        `shouldShowTo`+        "TIPH[MyVal 21,1,True]"++-- The implementation+-- part of HList proper now
+ examples/HListExample/TIPTransformM.hs view
@@ -0,0 +1,144 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}+{-# LANGUAGE ScopedTypeVariables, UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}  -- !TF+-- Transforming a TIP: applying to a TIP a (polyvariadic) function+-- that takes arguments from a TIP and updates the TIP with the result.+-- The monadic version.+-- This file contains two versions of the code.+-- The comments -- !Simple and -- !TF distinguish the versions+--+-- In more detail: we have a typed-indexed collection TIP and we+-- would like to apply a transformation function to it, whose argument+-- types and the result type are all in the TIP. The function should locate+-- its arguments based on their types, and update the TIP+-- with the result. The function may have any number of arguments,+-- including zero; the order of arguments should not matter.++-- The problem was posed by Andrew U. Frank on Haskell-Cafe, Sep 10, 2009.+-- http://www.haskell.org/pipermail/haskell-cafe/2009-September/066217.html+-- The problem is an interesting variation of the keyword argument problem.+-- In March 2010, Andrew Frank extended the problem for monadic operations.+-- This is the monadic version of TIPTransform.hs in the present directory.+++module HListExample.TIPTransformM where++import Data.HList.CommonMain+import Data.Typeable+import Control.Monad.Identity+import Control.Monad.Writer++import Test.Hspec+import Properties.Common++-- We start with the examples++newtype MyVal = MyVal Int deriving (Show,Typeable)++-- A specialized version of return for the Identity monad.+-- It is needed only for the Simple version of the code,+-- to tell the type checker the monad in which the computation is+-- taking place.+-- For the TF version of the code, we can use the ordinary return+-- in place of retI.+retI :: a -> Identity a+retI = return++-- A sample TIP+tip1 = MyVal 20 .*. (1::Int) .*. True .*. (3.5::Float) .*. emptyTIP+-- TIP (HCons (MyVal 20) (HCons 1 (HCons True (HCons 3.5 HNil))))++-- Update the Int component of tip1 to 2. The Int component must+-- exist. Otherwise, it is a type error+-- tip2 = runIdentity $ ttipM (retI (2::Int)) tip1 -- !Simple+tip2 = runIdentity $ ttipM (return (2::Int)) tip1  -- !TF+-- TIP (HCons (MyVal 20) (HCons 2 (HCons True (HCons 3.5 HNil))))+++-- Negate the boolean component of tip1+-- tip3 = runIdentity $ ttipM (retI . not) tip1 -- !Simple+tip3 = runIdentity $ ttipM (return . not) tip1      -- !TF+-- TIP (HCons (MyVal 20) (HCons 1 (HCons False (HCons 3.5 HNil))))++-- Update the Int component from the values of two other components+tip4 = runIdentity $ ttipM (\(MyVal x) y -> retI $ x+y) tip1+-- TIP (HCons (MyVal 20) (HCons 21 (HCons True (HCons 3.5 HNil))))++-- Update the MyVal component from the values of three other components+tip5 = runIdentity $ +       ttipM (\b (MyVal x) y -> retI $ MyVal $ if b then x+y else 0) tip1+-- TIP (HCons (MyVal 21) (HCons 1 (HCons True (HCons 3.5 HNil))))++-- The same but with the permuted argument order.+-- The order of arguments is immaterial: the values will be looked up using+-- their types+tip5' = runIdentity $ +        ttipM (\b y (MyVal x)-> retI $ MyVal $ if b then x+y else 0) tip1+-- TIP (HCons (MyVal 21) (HCons 1 (HCons True (HCons 3.5 HNil))))++-- Andrew Frank's test+-- tip6 :: IO (TIP (HCons MyVal (HCons Int (HCons Bool (HCons Float HNil)))))+tip6 :: IO (TIP (TagR [MyVal,Int,Bool, Float]))+tip6 = ttipM op6 tip1++op6 :: MyVal -> Bool -> IO MyVal+op6 (MyVal x) b = do+                let m = if b then MyVal (x `div` 4) else MyVal (x * 4)+                putStrLn $ "MyVal is now " ++ show m+                            -- ==>> MyVal 5+                return m+-- TIP (HCons (MyVal 5) (HCons 1 (HCons True (HCons 3.5 HNil))))+++op6w :: MyVal -> Bool -> Writer String MyVal+op6w (MyVal x) b = do+                let m = if b then MyVal (x `div` 4) else MyVal (x * 4)+                tell ("MyVal is now " ++ show m)+                            -- ==>> MyVal 5+                return m+++{-  -- !Simple+-- The Simple implementation+-- The drawback is the need to let the type checker know the monad in which the+-- computations take place. That is why we had to use retI in the above+-- code, which is a specialized version of return for the Identity monad. +-- In op6, the presence of putStrLn unambiguously specified the monad, viz. IO,+-- so no special return are required.++class Monad m => TransTIPM m op db where+    ttipM :: op -> db -> m db++-- If the operation is the computation in the desired monad,+-- the type of the computation must match an element of TIP.+instance (Monad m,+	  HTypeIndexed db, HUpdateAtHNat n op db db, HType2HNat op db n)+    => TransTIPM  m (m op) (TIP db) where+    ttipM op db = do+                     op' <- op+		     return $ tipyUpdate op' db++-- If op is not a computation in the desired monad m, +-- it must be a function. Look up its argument in a TIP and recur.+instance (Monad m, HOccurs arg db, TransTIPM m op db)+    => TransTIPM m (arg -> op) db where+    ttipM f db = ttipM (f (hOccurs db)) db+-} -- !Simple++-- {- -- !TF+-- Moved to TIP.hs+-- -} -- !TF++mainTTIPM = describe "ttipM" $ it "all" $ do+  tip1 `shouldShowTo` "TIPH[MyVal 20,1,True,3.5]"+  tip2 `shouldShowTo` "TIPH[MyVal 20,2,True,3.5]"+  tip3 `shouldShowTo` "TIPH[MyVal 20,1,False,3.5]"+  tip4 `shouldShowTo` "TIPH[MyVal 20,21,True,3.5]"+  tip5 `shouldShowTo` "TIPH[MyVal 21,1,True,3.5]"+  let tip6w = runWriter (ttipM op6w tip1)+  fst tip6w `shouldShowTo` "TIPH[MyVal 5,1,True,3.5]"+  snd tip6w `shouldBe` "MyVal is now MyVal 5"+
− examples/MainGhcGeneric1.hs
@@ -1,318 +0,0 @@-{-# LANGUAGE PolyKinds #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TemplateHaskell #-}--{---   (C) 2004, Oleg Kiselyov, Ralf Laemmel, Keean Schupke--   This is a main module for exercising a model with generic type-   cast and generic type equality. Because of generic type equality,-   this model works with GHC but it does not work with Hugs.---}--module MainGhcGeneric1 where--import Datatypes2-import Data.HList.CommonMain-import Control.Lens--asProxy :: proxy a -> Proxy a-asProxy _ = Proxy----- ----------------------------------------------------------------------------type Animal =  '[Key,Name,Breed,Price]--angus :: HList Animal-angus =  HCons (Key 42)-           (HCons (Name "Angus")-           (HCons  Cow-           (HCons (Price 75.5)-            HNil)))--tList1 = hFoldr (HSeq HPrint) (return () :: IO ()) angus-{-- Key 42- Name "Angus"- Cow- Price 75.5--}--tList2 = print $ hAppend angus angus-{--H[Key 42, Name "Angus", Cow, Price 75.5, Key 42, Name "Angus", Cow, Price 75.5]--}---testListBasic = do-  putStrLn "\nBasic HList tests"-  tList1-  tList2--testHArray = do-  putStrLn "\ntestHArray"-  myProj1-  myProj2-  myProj2'-  myProj3-  myProj4--myProj1 = print $ hProjectByHNats (hNats (HCons hZero (HCons hZero HNil))) angus--- H[Key 42]---- Before:--- H[Key 42, Key 42]--- XXX I don't duplicate at present!--myProj2 = print $ -	  hProjectByHNats (hNats (HCons hZero (HCons (hSucc hZero) HNil))) angus--- H[Key 42, Name "Angus"]--myProj2' = print $ -	  hProjectByHNats (undefined::Proxy ['HZero, 'HSucc 'HZero]) angus--- H[Key 42, Name "Angus"]--myProj3 = print $ -	  hProjectAwayByHNats (hNats (HCons hZero HNil)) angus--- H[Name "Angus", Cow, Price 75.5]--myProj4 = print $ -	  hSplitByHNats -	    (undefined::Proxy ['HZero, 'HSucc 'HZero])-	    angus--- (H[Key 42, Name "Angus"],H[Cow, Price 75.5])---testHOccurs = do-  putStrLn "\ntestHOccurs"-  print (hOccurs angus :: Breed)-  print $ hOccurs $ hBuild 1 ^. from tipHList-  print $ null $ hOccurs $ hBuild [] ^. from tipHList-  print (hProject angus :: HList '[Key, Name])---testTypeIndexed = do-  putStrLn "\ntestTypeIndexed"-  print typeIdx1-  print typeIdx2-  print $ hUpdateAt Sheep typeIdx1-  print $ hDeleteAt (undefined::Proxy Breed) typeIdx2-  print $ hProjectBy (undefined::Proxy '[Breed]) angus-  print $ hSplitBy (undefined:: Proxy '[Breed]) angus- where -  typeIdx1 = hDeleteMany (undefined::Proxy Name) angus-  typeIdx2 = BSE .*. angus---- |--- This example from the TIR paper challenges singleton lists.--- Thanks to the HW 2004 reviewer who pointed out the value of this example.--- We note that the explicit type below is richer than the inferred type.--- This richer type was needed for making this operation more polymorphic.--- That is, /a)/ would not work without the explicit type, --- while /b/ would:------ >  a)  ((+) (1::Int)) $ snd $ tuple oneTrue--- >  b)  ((+) (1::Int)) $ fst $ tuple oneTrue------ Currently (2014) type signatures are not needed to define tipyTuple.--tuple l = tipyTuple l----- | A specific tuple--- Need to import an instance of TypeEq to be able to run the examples--- oneTrue :: TIP (TagR [Int, Bool])		-- inferred-oneTrue = (1::Int) .*. True .*. emptyTIP--testTuple = do-  putStrLn "\ntestTuple"-  print $ let (a,b) = tuple oneTrue in (a+(1::Int), not b)-  print $ let b = not $ fst $ tuple oneTrue in (1::Int,b)-  print $ tuple oneTrue == (1::Int,True)-  print $ ((+) (1::Int)) $ fst $ tuple oneTrue-  print $ ((+) (1::Int)) $ snd $ tuple oneTrue---myTipyCow = angus ^. from tipHList--animalKey :: ( SubType l (TIP Animal) -- explicit-             , HOccurs Key l          -- implicit-             ) => l -> Key-animalKey = hOccurs--animalish :: SubType l (TIP Animal) => l -> l-animalish = id-animalKey' l = hOccurs (animalish l) :: Key--testTIP = do-  putStrLn "\ntestTIP"-  print $ (hOccurs myTipyCow :: Breed)-  print $ BSE .*. myTipyCow-  -- print $ Sheep .*. myTipyCow-  {- if we uncomment the line above, we get the type error-     about the violation of the TIP condition: Breed type-     occurs twice.--    No instance for (Fail * (TypeFound Breed))-      arising from a use of `hExtend'-  -}-  print $ Sheep .*. hDeleteAtLabel (Label::Label Breed) myTipyCow-  print $ tipyUpdate Sheep myTipyCow--{--data MyNS = MyNS -- a name space for record labels--key   = firstLabel MyNS  (undefined::DKey)-name  = nextLabel  key   (undefined::DName)-breed = nextLabel  name  (undefined::DBreed)-price = nextLabel  breed (undefined::DPrice)--data DKey;   instance Show DKey   where show _ = "key"-data DName;  instance Show DName  where show _ = "name"-data DBreed; instance Show DBreed where show _ = "breed"-data DPrice; instance Show DPrice where show _ = "price"---}--makeLabels3 "MyNS" (words "key name breed price")--unpricedAngus =  key    .=. (42::Integer)-             .*. name   .=. "Angus"-             .*. breed  .=. Cow-             .*. emptyRecord---getKey l = hLookupByLabel key l--testRecords = do-  putStrLn "\ntestRecords"-  print $ unpricedAngus-  print $ unpricedAngus .!. breed-  print $ test3-  print $ test4-  print $ test5-  print $ hProjectByLabels (labelsOf (breed `HCons` price `HCons` HNil)) test5- where-  test3 = hDeleteAtLabel breed unpricedAngus-  test4 = breed .=. Sheep .@. unpricedAngus-  test5 = price .=. 8.8 .*. unpricedAngus-  -- test7 should have the same type as unpricedAngus and test4 but-  -- with the different order of labels-  test7 = (newLVPair breed Sheep) .*. test3--{--testRecords =   ( test1 -              , ( test2-              , ( test3 -              , ( test4-              , ( test5-              , ( test6-	      , (test7, test81, test82, test83, test84, test85)-                ))))))- where-  test81 = equivR test1 test3 -- HNothing-  test82 = let HJust (r17,r71) = equivR test1 test7 in (r17 test1,r71 test7)-  test83 = let HJust (r17,r71) = -		   equivR test1 test7 in show (r17 test1) == show test7-  test84 = let HJust (r47,r74) = -		   equivR test4 test7 in (show (r47 test4) == show test7,-					  show (r74 test7) == show test4)-  test85 = let HJust (r7,r7') = -		   equivR test7 test7 in show (r7 test7) == show (r7' test7)--testRecordsP =   ( test1 -		 , ( test2-		 , ( test3 -		 , ( test4-		 , ( test5-		 , ( test6-                   ))))))- where---  test1 = mkRecordP (undefined::Animal) angus-  test1 = record_r2p unpricedAngus-  test2 = test1 .!. breed-  test3 = hDeleteAtLabelP breed test1---  test4 = test1 .@. breed .=. Sheep-  test4 = hExtend (newLVPair breed Sheep) test3-  test5 = price .=. 8.8 .*. test1-  test6 = fst $ h2projectByLabels (HCons breed (HCons price HNil)) test5----}---type AnimalCol = TagR [Key,Name,Breed,Price]--testTIC = do-  putStrLn "\ntestTIC"-  print $ myCol-  print $ (hOccurs myCol :: Maybe Breed)-  print $ (hOccurs myCol :: Maybe Price)- where-  myCol = mkTIC Cow :: TIC AnimalCol--{---myCol = mkTIC Cow :: TIC AnimalCol--*TIC> hOccurs myCol :: Maybe Breed-Just Cow-*TIC> hOccurs myCol :: Maybe Price-Nothing-*TIC> mkTIC "42" :: TIC AnimalCol-Type error ...-*TIC> hOccurs myCol :: Maybe String-Type error ...---}--testVariant = do-    putStrLn "\ntestVariant"-    print testVar1-    print testVar2-    print testVar3- where-  testVar1 = mkVariant name "angus" animalVar-  testVar2 = testVar1 .!. key-  testVar3 = testVar1 .!. name--animalVar = asProxy $-               key   .=. (undefined :: Integer)-           .*. name  .=. (undefined :: String)-           .*. breed .=. (undefined :: Breed)-           .*. emptyRecord-{---- ----------------------------------------------------------------------------main = mainExport-mainExport-   = print $   ( testHArray-               , ( testHOccurs-               , ( testTypeIndexed-               , ( testTuple-               , ( testTIP--               , ( testRecords-               , ( testRecordsP-               , ( testTIC-               , ( testVariant-               )))))))))---}--main = do-       testListBasic-       testHArray-       testHOccurs-       testTypeIndexed-       testTuple-       testTIP-       testRecords-       testTIC-       testVariant
− examples/MainGhcGeneric1.ref
@@ -1,59 +0,0 @@--Basic HList tests-Key 42-Name "Angus"-Cow-Price 75.5-H[Key 42,Name "Angus",Cow,Price 75.5,Key 42,Name "Angus",Cow,Price 75.5]--testHArray-H[Key 42]-H[Key 42,Name "Angus"]-H[Key 42,Name "Angus"]-H[Name "Angus",Cow,Price 75.5]-(H[Key 42,Name "Angus"],H[Cow,Price 75.5])--testHOccurs-Cow-1-True-H[Key 42,Name "Angus"]--testTypeIndexed-H[Key 42,Cow,Price 75.5]-H[BSE,Key 42,Name "Angus",Cow,Price 75.5]-H[Key 42,Sheep,Price 75.5]-H[BSE,Key 42,Name "Angus",Price 75.5]-H[Cow]-(H[Cow],H[Key 42,Name "Angus",Price 75.5])--testTuple-(2,False)-(1,False)-True-2-2--testTIP-Cow-TIPH[BSE,Key 42,Name "Angus",Cow,Price 75.5]-TIPH[Sheep,Key 42,Name "Angus",Price 75.5]-TIPH[Key 42,Name "Angus",Sheep,Price 75.5]--testRecords-Record{key=42,name="Angus",breed=Cow}-Cow-Record{key=42,name="Angus"}-Record{key=42,name="Angus",breed=Sheep}-Record{price=8.8,key=42,name="Angus",breed=Cow}-Record{price=8.8,breed=Cow}--testTIC-TIC{breed=Cow}-Just Cow-Nothing--testVariant-V{name="angus"}-Nothing-Just "angus"
− examples/MainGhcGeneric2.hs
@@ -1,22 +0,0 @@-{---   (C) 2004, Oleg Kiselyov, Ralf Laemmel, Keean Schupke--   Included for completeness' sake.-   The TypeEqBoolGeneric2.hs implementation is demonstrated.---}--module MainGhcGeneric2 where--import Data.HList---{-----------------------------------------------------------------------------}--main = print ( hEq True False-             , hEq True "True"-             )---{-----------------------------------------------------------------------------}
− examples/MainGhcGeneric2.ref
@@ -1,1 +0,0 @@-(HTrue,HFalse)
− examples/MainPatternMatch.hs
@@ -1,80 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE EmptyDataDecls #-}-{-# LANGUAGE PatternGuards #-}---- Pattern-matching on HList's Records--{--  See the thread `Re: (small) records proposal for Haskell '06'-  Haskell mailing list, January 2006-  http://www.haskell.org/pipermail/haskell/2006-January/017276.html--Joel Reymont wrote:-> How does pattern matching work with HList?-> I would like to pass a HList to a function and only match if a-> certain field had a certain value.--The code below defines the function foo that accepts a record and-yields one value if the field PtX of the record has the value 0. If-the field has any other value, a different result is returned. The-function is written in a pattern-matching style. Also, the function is-record-polymorphic: it takes _any_ record (of any `record type') that-happens to have the field names PtX.--        *Test> :t foo-        foo :: (Num v, HasField (Proxy PtX) r v) => r -> [Char]---}--module Main where--import Data.HList.CommonMain--makeLabels ["px","py"]---- Labels--- The more convenient labels, Label4.hs, need -fallow-overlapping-instances--- The less convenient label representation needs fewer extensions.--- We go for more convenient...--{--data PtX; px = proxy::Proxy PtX-data PtY; py = proxy::Proxy PtY--}---accessor r f = r .!. f---- 1D points-point1 x = -       px .=. x-   .*. emptyRecord---- 2D points-point2 x y = -       px .=. x-   .*. py .=. (y + 10)-   .*. emptyRecord----- Record-polymorphic function, which illustrates record pattern-matching,--- with the help of generalized guards-foo p | 0 <- p .!. px = "X is zero"-foo _ = "something else"--test1  = foo (point1 0)     -- X is zero-test1' = foo (point1 42)    -- something else-test2 = foo (point2 10 20)  -- something else--- inline construction of the record-test3 = foo (py .=. False .*. px .=. 0 .*. emptyRecord) -- X is zero--main = do-       putStrLn test1-       putStrLn test1'-       putStrLn test2-       putStrLn test3
− examples/MainPatternMatch.ref
@@ -1,4 +0,0 @@-X is zero-something else-something else-X is zero
− examples/MainPosting-040607.hs
@@ -1,304 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE ExistentialQuantification #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE DeriveDataTypeable #-}--{---Hi Mike,--You might find heterogeneous lists useful.-http://www.cwi.nl/~ralf/HList/-See the treatment of your example below.--Cheers,-Ralf---}--module Main where--import Data.HList.CommonMain-import Data.Typeable---- These are your two "implementations".--data MyImplementation1 = MyImplementation1 Int deriving (Show,Eq,Typeable)-data MyImplementation2 = MyImplementation2 Int deriving (Show,Eq,Typeable)----- This is your interface class and the two instances.--class MyInterface a - where-  foo :: a -> Int--instance MyInterface MyImplementation1- where-  foo (MyImplementation1 i) = i--instance MyInterface MyImplementation2- where-  foo (MyImplementation2 i) = i----- Here is your list,--- without the noise you don't like.--list1 =  MyImplementation1 10-     .*. MyImplementation2 20-     .*. HNil----- If you like, this is the type, but it is not needed.--- This list is not opaque. Less trouble in our experience.--- (When compared to using existentials.)--type MyList = HList '[MyImplementation1, MyImplementation2]----- Perhaps you want to make sure that you have a list of implementations--- of MyInterface. Here is *one* way to do it. But you don't need to do it--- because this will be automatically checked (statically) whenever you--- try to use the fooISH interface.--class ListOfMyInterface l- where-  listOfMyInterface :: HList l -> HList l-  listOfMyInterface = id--instance ListOfMyInterface '[]-instance ( MyInterface e-         , ListOfMyInterface l-         )-      =>   ListOfMyInterface (e ': l)----- So you apply the id function with the side effect of statically --- ensuring that you are given a list of implementations of MyInterface.--list2 :: MyList-list2 = listOfMyInterface list1----- Here is another way to do it.--- You apply a heterogenous fold to the list.--- This second solution is just for fun.--data ImplementsMyInterface = ImplementsMyInterface--instance (- x ~ (e,HList l),- y ~ (HList (e ': l))- ) => ApplyAB ImplementsMyInterface x y- where-  applyAB _ (e,l) = HCons e l--myKindOfList l = hFoldr ImplementsMyInterface HNil l----- Basically again you apply the identity function; a deep one this time.--list3 :: MyList-list3 = myKindOfList list1----- Your equality can indeed not work because the existentially quantified--- implementations are of course opaque. You cannot compare apples and--- oranges. Equality of heterogeneous lists is trivial; it is just derived.--- To make it a little bit more interesting, we can consider heterogeneous--- or stanamic equality. So you will always get a Boolean even for lists--- of different types. See below.----- Here is your bar function.--- It uses one sort of maps on heterogeneous lists.--bar :: MyList -> Int-bar = sum . hMapOut Foo--data Foo = Foo -- type driver for class-level application--instance (MyInterface e, int ~ Int) => ApplyAB Foo e int- where-  applyAB _ e = foo e----- Yet another heterogeneous equality.--- Just for fun.----yaHEq :: (Typeable a, Typeable b, Eq a) => a -> b -> Bool-yaHEq a b = case cast b of-             Just a' -> a == a'-             Nothing -> False---- Yet another heterogeneous list; a bit less typed.-data AnyMyInterface = forall a. ( Eq a-                                , Typeable a-                                , MyInterface a-                                ) => AnyMyInterface a--type MyList' = [AnyMyInterface]-list4 = [ AnyMyInterface $ MyImplementation1 10-        , AnyMyInterface $ MyImplementation1 10-        ]-list5 = [ AnyMyInterface $ MyImplementation1 10-        , AnyMyInterface $ MyImplementation2 10-        ]-list6 = [ AnyMyInterface $ MyImplementation1 10-        , AnyMyInterface $ MyImplementation2 20-        ]--instance Eq AnyMyInterface- where-  (AnyMyInterface x) == (AnyMyInterface y) = x `yaHEq` y---{---Demo follows.--*Main> :l gh-users-040607.hs-Compiling FakePrelude      ( ./FakePrelude.hs, interpreted )-Compiling HType            ( HType.hs, interpreted )-Compiling HList            ( ./HList.hs, interpreted )-Compiling HArray           ( ./HArray.hs, interpreted )-Compiling HTypeDriven      ( ./HTypeDriven.hs, interpreted )-Compiling Main             ( gh-users-040607.hs, interpreted )-Ok, modules loaded: Main, HTypeDriven, HArray, HList, HType, FakePrelude.-*Main> list1-HCons (MyImplementation1 10) (HCons (MyImplementation2 20) HNil)-*Main> bar list1-30-*Main> list1 == list1-True-*Main> list1 `hStagedEq` hReverse list1-False-*Main> list4!!0 == list4!!1-True-*Main> list5!!0 == list5!!1-False-*Main> list6!!0 == list6!!1-False---}--main = print-             ( list1-           , ( list1 == list1-          --  , ( list1 `hStagedEq` hReverse list1-           , ( list4!!0 == list4!!1-           , ( list5!!0 == list5!!1-           , ( list6!!0 == list6!!1-           )))))--{---Mike Aizatsky wrote:-->Hello,->->I'm in process of rewriting the old Java application. While this is for sure->lots of fun, there're some problems in modeling the java interfaces.->->Here's the common Java scenario (it's actually the pattern, common for all->OO-languages, so there should be no problems in understanding it):->->interface MyInterface {->	int foo();->}->->class MyImplementation1 implements MyInterface { int foo() {...} }->class MyImplementation2 implements MyInterface { int foo() {...} }->->And, somewhere in the code:->->int bar(List<MyInterface> list) { .... sum up all foos & return .... }->->I've found quite an obvious translation of it to Haskell:->->module Ex where->->class MyInterface a where->	foo :: a -> Int->->data AnyMyInterface = forall a. (MyInterface a) => AnyMyInterface a->->instance MyInterface AnyMyInterface where->	foo (AnyMyInterface a) = foo a->->->data MyImplementation1 = MyImplementation1 Int->->instance MyInterface MyImplementation1 where->	foo(MyImplementation1 i) = i->->data MyImplementation2 = MyImplementation2 Int->->instance MyInterface MyImplementation2 where->	foo(MyImplementation2 i) = i->->->type MyList = [AnyMyInterface]->->list1 :: MyList->list1 = [AnyMyInterface (MyImplementation1 10), AnyMyInterface->(MyImplementation2 20)]->->bar :: MyList -> Int->bar l = sum (map foo l)->->->However there're some problems with this way to go:->->1. It's quite verbose. I already have a dozen of such interfaces, and I'm a->bit tired of writing all this AnyInterface stuff. I'm already thinking about->writing the Template Haskell code to generate it. Is anything similar->available around?->->2. I don't like the fact that I need to wrap all implementations inside the->AnyMyInterface when returning values (see list1). Any way to get rid of it?->->3. The big problem. I can't make AnyMyInterface to be an instance of Eq. I->write:->->data AnyMyInterface = forall a. (MyInterface a, Eq a) => AnyMyInterface a->instance Eq AnyMyInterface where->	(==) (AnyMyInterface a1) (AnyMyInterface a2) = a1 == a2->->And it gives me an error (ghc 6.2.1):->->    Inferred type is less polymorphic than expected->        Quantified type variable `a1' is unified with another quantified->type variable `a'->    When checking an existential match that binds->        a1 :: a->        a2 :: a1->    The pattern(s) have type(s): AnyMyInterface->                                 AnyMyInterface->    The body has type: Bool->    In the definition of `==':->        == (AnyMyInterface a1) (AnyMyInterface a2) = a1 == a2->    In the definition for method `=='->->Honestly, I don't understand what's going on. My guess is that the problem->comes from the fact that a1 & a2 might be of different Implementations. Is->it right? Any way to define the Eq instance of AnyMyInterface?->->->So, it looks like that existential data types do allow you to mimic the->polymorphic data structures, found in OO languages. But it results in much->more verbose code. Are there any other ways to do the same stuff?->->_______________________________________________->Glasgow-haskell-users mailing list->Glasgow-haskell-users@haskell.org->http://www.haskell.org/mailman/listinfo/glasgow-haskell-users->---}
− examples/MainPosting-040607.ref
@@ -1,1 +0,0 @@-(H[MyImplementation1 10,MyImplementation2 20],(True,(True,(False,False))))
− examples/MainPosting-051106.hs
@@ -1,197 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE EmptyDataDecls #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-}-module Main where---- Needed for a reply to the Haskell mailing list--import Data.HList.CommonMain hiding (Comp(..))--main = do-    print $ comp "abc"-    print $ (hComposeList test2 "abc" :: Int) -- definition in HList now--test = HCons (length::String -> Int) (HCons ((+1)::(Int->Int)) (HCons ((*2)::(Int->Int)) HNil))-test2 = length .*. (+1) .*. (*2) .*. HNil--data Comp--{- simpler class. wouldn't work with test2. The original HFoldr won't work with- - Apply anymore.-instance Apply Comp (x -> y,y -> z)- where-  type ApplyR Comp (x -> y,y -> z) = x -> z-  apply _ (f,g) = g . f-  -}--instance ((x -> y,y -> z) ~ xyz, (x -> z) ~ xz)-    => ApplyAB Comp xyz xz- where-  applyAB _ (f,g) = g . f---- Function composition based on type code works.--comp  = hFoldr (undefined::Comp) (id::Int -> Int) test---- Function composition based on normal polymorphism doesn't--- comp' = hFoldr (uncurry (flip (.))) (id::Int -> Int) test--{---From Ralf.Lammel at microsoft.com  Mon Nov  7 00:11:01 2005-From: Ralf.Lammel at microsoft.com (Ralf Lammel)-Date: Sun Nov  6 23:50:27 2005-Subject: [Haskell-cafe] Type classes and hFoldr from HList-Message-ID: <1152E22EE8996742A7E36BBBA7768FEE079C474F@RED-MSG-50.redmond.corp.microsoft.com>--Hi Greg,--Since hfoldr is right-associative, I prefer to reorder your list of-functions as follows:--> test = HCons (length::String -> Int) (HCons ((+1)::(Int->Int)) (HCons-((*2)::(Int->Int)) HNil))--Note that I also annotated length with its specific type.-(If you really wanted to leave things more polymorphic, you would need-to engage in TypeCast.)--Providing a specific Apply instance for (.) is not necessary, strictly-necessary. We could try to exploit the normal function instance for-Apply.--Let me recall that one here for convenience:-->instance Apply (x -> y) x y-> where->  apply f x = f x--Let me also recall the hFoldr instances:-->class HList l => HFoldr f v l r | f v l -> r-> where->  hFoldr :: f -> v -> l -> r-->instance HFoldr f v HNil v-> where->  hFoldr _ v _ = v-->instance ( HFoldr f v l r->         , Apply f (e,r) r'->         )->      => HFoldr f v (HCons e l) r'-> where->  hFoldr f v (HCons e l) = apply f (e,hFoldr f v l)---To fit in (.), we would flip and uncurry it.-So we could try:--comp' = hFoldr (uncurry (flip (.))) (id::Int -> Int) test--This wouldn't work.-The trouble is the required polymorphism of the first argument of-hFoldr.-The type of that argument as such is polymorphic.-However, this polymorphism does not survive type class parameterization.-You see this by looking at the HCons instance of HFoldr.-The different occurrences of "f" would need to be used at different-types.-This would only work if the type class parameter f were instantiated by-the polymorphic type of (uncurry (flip (.))). (And even then we may need-something like TypeCast.)--What you can do is define a dedicated *type code* for composition.--comp  = hFoldr (undefined::Comp) (id::Int -> Int) test--data Comp--instance Apply Comp (x -> y,y -> z) (x -> z)- where-  apply _ (f,g) = g . f---Ralf---> -----Original Message------> From: haskell-cafe-bounces@haskell.org [mailto:haskell-cafe--> bounces@haskell.org] On Behalf Of Greg Buchholz-> Sent: Sunday, November 06, 2005 7:01 PM-> To: haskell-cafe@haskell.org-> Subject: [Haskell-cafe] Type classes and hFoldr from HList-> -> ->   I was playing around with the HList library from the paper...-> ->     Strongly typed heterogeneous collections->     http://homepages.cwi.nl/~ralf/HList/-> -> ...and I thought I'd try to fold the composition function (.) through-a-> heterogeneous list of functions, using hFoldr...-> -> >{-# OPTIONS -fglasgow-exts #-}-> >{-# OPTIONS -fallow-undecidable-instances #-}-> >-> >import CommonMain-> >-> >main = print $ comp "abc"-> >-> >test = HCons ((+1)::(Int->Int)) (HCons ((*2)::(Int->Int)) (HCons-length-> HNil))-> >-> >comp = hFoldr (.) id test-> >-> >instance Apply (a -> b -> c -> d) (a, b) (c -> d)-> >    where-> >        apply f (a,b) = f a b-> -> ...but it fails with the following type error...-> -> ]Compiling Main             ( compose.hs, interpreted )-> ]-> ]compose.hs:10:7:-> ]    No instances for (Apply ((b -> c) -> (a -> b) -> a -> c)-> ]                            (Int -> Int, r)-> ]                            ([Char] -> a3),-> ]                      Apply ((b -> c) -> (a -> b) -> a -> c) (Int ->-Int,-> r1) r,-> ]                      Apply ((b -> c) -> (a -> b) -> a -> c) ([a2] ->-> Int, a1 ->a1) r1)-> ]      arising from use of `hFoldr' at compose.hs:10:7-12-> ]    Probable fix:-> ]      add an instance declaration for (Apply ((b -> c) -> (a -> b) ->-a --> > c)-> ]                                             (Int -> Int, r)-> ]                                             ([Char] -> a3),-> ]                                       Apply ((b -> c) -> (a -> b) ->-a --> > c)-> ](Int -> Int, r1) r,-> ]                                       Apply ((b -> c) -> (a -> b) ->-a --> > c)-> ]([a2] -> Int, a1 -> a1) r1)-> ]    In the definition of `comp': comp = hFoldr (.) id test-> -> ...Anyway, I couldn't quite tell whether I was using hFoldr-incorrectly,-> or if I needed to have more constraints placed on the construction of-> "test", or if needed some sort of type-level function that resolves...-> -> Apply ((b -> c) -> (a -> b) -> a -> c)-> -> ...into (a -> c), or something else altogether.  I figured someone-might-> be able to help point me in the right direction.---}
− examples/MainPosting-051106.ref
@@ -1,2 +0,0 @@-8
-8
examples/Properties/Common.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TypeFamilies #-}@@ -10,6 +11,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE ConstraintKinds #-} module Properties.Common where  import Data.HList.CommonMain@@ -17,11 +19,20 @@ import Data.Array.Unboxed import Data.HList.Variant import Data.Monoid+import Data.Semigroup import Control.Lens import Control.Applicative import GHC.TypeLits (Symbol) import Language.Haskell.TH +#if MIN_VERSION_hspec_expectations(0,8,0)+import Test.Hspec.Expectations (shouldBe, shouldReturn, Expectation, HasCallStack)+#else+import Test.Hspec.Expectations (shouldBe, shouldReturn, Expectation)+import GHC.Exts (Constraint)+type HasCallStack = (() :: Constraint)+#endif+ hListT :: [TypeQ] -> TypeQ hListT = foldr (\a b -> [t| $a ': $b |]) promotedNilT @@ -51,6 +62,15 @@ eq x y = hCast x === Just y .&&. Just x === hCast y infix 4 `eq` ++shouldShowTo :: (HasCallStack, Show a) => a -> String -> Expectation+shouldShowTo x y = show x `shouldBe` y+infixr 0 `shouldShowTo`++shouldReturnShowTo :: (HasCallStack, Show a) => IO a -> String -> Expectation+shouldReturnShowTo x y = fmap show x `shouldReturn` y+infixr 0 `shouldReturnShowTo`+ data HSuccF = HSuccF  instance (psn ~ Proxy (HSucc n),@@ -127,8 +147,12 @@     mempty = BoolN (getAll mempty)     mappend (BoolN x) (BoolN y) = BoolN (getAll (mappend (All x) (All y))) +instance Semigroup (BoolN n) where (<>) = mappend++#if !MIN_VERSION_QuickCheck(2,9,0) instance Arbitrary (Identity (BoolN n)) where     arbitrary = fmap return arbitrary+#endif   data HSortF = HSortF
examples/Properties/KW.hs view
@@ -7,6 +7,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE DataKinds #-}+{-# LANGUAGE CPP #-} module Properties.KW where  @@ -17,6 +18,66 @@   kwSpecs = describe "kw" $ do++#if (__GLASGOW_HASKELL__ > 799)+    return ()+    {- with NoMonoLocalBinds+     - /home/aavogt/wip/HList/HList/examples/Properties/KW.hs:59:15: error:ghc: panic! (the 'impossible' happened)+  (GHC version 8.0.2 for x86_64-unknown-linux):+	No skolem info: k_aqoh[sk]++        with MonoLocalBinds, I think the error is the same as in earlier versions++        /home/aavogt/wip/HList/HList/examples/Properties/KW.hs:62:15: error:+            • Couldn't match type ‘'[Tagged "x" (BoolN "x")]’ with ‘'[]’+              Expected type: Record '[]+                Actual type: HExtendR (Tagged "x" (BoolN "x")) (Record '[])+            • In the first argument of ‘f2’, namely+                ‘(lx .=. x2 .*. emptyRecord)’+              In the first argument of ‘eq’, namely+                ‘f2 (lx .=. x2 .*. emptyRecord)’+              In the expression: f2 (lx .=. x2 .*. emptyRecord) `eq` f1 x2 y+                     +        /home/aavogt/wip/HList/HList/examples/Properties/KW.hs:63:15: error:+            • Couldn't match type ‘'[Tagged "y" (BoolN "y")]’ with ‘'[]’+              Expected type: Record '[]+                Actual type: HExtendR (Tagged "y" (BoolN "y")) (Record '[])+            • In the first argument of ‘f2’, namely+                ‘(ly .=. y2 .*. emptyRecord)’+              In the first argument of ‘eq’, namely+                ‘f2 (ly .=. y2 .*. emptyRecord)’+              In the expression: f2 (ly .=. y2 .*. emptyRecord) `eq` f1 x y2+                     +        /home/aavogt/wip/HList/HList/examples/Properties/KW.hs:64:15: error:+            • Couldn't match type ‘'[Tagged "x" (BoolN "x"),+                                     Tagged "y" (BoolN "y")]’+                             with ‘'[]’+              Expected type: Record '[]+                Actual type: HExtendR+                               (Tagged "x" (BoolN "x")) (Record '[Tagged "y" (BoolN "y")])+            • In the first argument of ‘f2’, namely+                ‘(lx .=. x2 .*. ly .=. y2 .*. emptyRecord)’+              In the first argument of ‘eq’, namely+                ‘f2 (lx .=. x2 .*. ly .=. y2 .*. emptyRecord)’+              In the expression:+                f2 (lx .=. x2 .*. ly .=. y2 .*. emptyRecord) `eq` f1 x2 y2+                     +        /home/aavogt/wip/HList/HList/examples/Properties/KW.hs:65:15: error:+            • Couldn't match type ‘'[Tagged "y" (BoolN "y"),+                                     Tagged "x" (BoolN "x")]’+                             with ‘'[]’+              Expected type: Record '[]+                Actual type: HExtendR+                               (Tagged "y" (BoolN "y")) (Record '[Tagged "x" (BoolN "x")])+            • In the first argument of ‘f2’, namely+                ‘(ly .=. y2 .*. lx .=. x2 .*. emptyRecord)’+              In the first argument of ‘eq’, namely+                ‘f2 (ly .=. y2 .*. lx .=. x2 .*. emptyRecord)’+              In the expression:+                f2 (ly .=. y2 .*. lx .=. x2 .*. emptyRecord) `eq` f1 x2 y2++-}+#else     it "f1" $ property $ do       (f1 :: BoolN "x" -> BoolN "y") <- arbitrary       x :: BoolN "x" <- arbitrary@@ -55,7 +116,7 @@       y :: BoolN "y" <- arbitrary       y2 :: BoolN "y" <- arbitrary -      let addDef new = hRearrange' (new .<++. [pun| x y |])+      let addDef new = hRearrange (Proxy :: Proxy [Label "x", Label "y"]) (new .<++. [pun| x y |])           f2 (addDef  -> [pun| (x y) |]) = f1 x y       return $ conjoin         [ f2 emptyRecord `eq` f1 x y,@@ -65,3 +126,4 @@           f2 (ly .=. y2 .*. lx .=. x2 .*. emptyRecord) `eq` f1 x2 y2         ] +#endif
examples/Properties/LengthDependent.hs view
@@ -20,6 +20,7 @@ import Data.HList.HSort (hMSortBy) import Data.HList.Variant (eqVariant) import Data.HList.Record (hZipRecord2)+import Data.HList.HList (hAppend') import Data.HList.CommonMain  @@ -111,6 +112,7 @@         x <- genHL True         y <- genHL True         return $ conjoin [$(varE 'hConcat) ($(varE 'hBuild) x y) == hAppend x y,+                          $(varE 'hConcat) ($(varE 'hBuild) x y) == hAppend' x y,                           $(varE 'hConcat) (hBuild x) == x]    it "partition" $@@ -366,9 +368,14 @@     z <- genHL (BoolN True :: BoolN "z")     let xyz = hConcat (hBuild x y z)         hxyz = hEnd (hBuild (hHead x) (hHead y) (hHead z))-        hM v = hOccursMany xyz === hList2List v++        -- -XNoMonoLocalBinds on ghc <= 7.10.4 allowed+        -- having one function+        hM1 v = hOccursMany xyz === hList2List v+        hM2 v = hOccursMany xyz === hList2List v+        hM3 v = hOccursMany xyz === hList2List v     return $ conjoin-      [ hM x, hM y, hM z,+      [ hM1 x, hM2 y, hM3 z,         hOccurs (hConcat (hBuild x (HCons w HNil) z)) === w,         hOccursOpt xyz === (Nothing `asTypeOf` Just w)         -- hProject hxyz === hBuild (hHead x) (hHead y)
examples/Properties/LengthDependentSplice.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE KindSignatures #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE MonoLocalBinds #-} -- maybe it isn't necessary for everything? module Properties.LengthDependentSplice where import Properties.LengthDependent import Language.Haskell.TH@@ -16,11 +17,11 @@                [| describe $(stringE (show n)) $(hl1 n) |]             | n <- [1 .. 5]]     ++ [ noBindS [| describe $(stringE (show (n1,n2))) $(hl2 n1 n2) |]-      | n1 <- [1 .. 3],-        n2 <- [1 .. 3] ]+      | n1 <- [1 .. 2],+        n2 <- [1 .. 2] ]     ++ [ noBindS [| describe $(stringE (show (n1,n2,n3))) $(hl3 n1 n2 n3) |]       | n1 <- [0 .. 2],         n2 <- [0 .. 1],-        n3 <- [0 .. 2],+        n3 <- [0 .. 1],         not $ all (==0) [n1,n2,n3] ]   )
examples/Properties/LengthIndependent.hs view
@@ -8,12 +8,17 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE DataKinds #-}+{-# LANGUAGE CPP #-} module Properties.LengthIndependent where import Properties.Common import Control.Lens import Data.HList.CommonMain import Test.Hspec+#if MIN_VERSION_QuickCheck(2,10,1)+import Test.QuickCheck hiding (Fun)+#else import Test.QuickCheck+#endif import Data.Monoid import Data.Maybe import Control.Applicative@@ -311,6 +316,16 @@     hOccurs (HCons True HNil^. from tipHList)       `eq` True +  it "tipyLens" $ property $ do+    u :: BoolN "u" <- arbitrary+    v :: BoolN "v" <- arbitrary+    w :: BoolN "w" <- arbitrary+    let r = tipHList # hBuild v w+    return $ conjoin+      [ (r & tipyLens %~ ( \ (_ :: BoolN "v") -> u)) `eq` tipHList # hBuild u w,+        (r & tipyLens %~ ( \ (_ :: BoolN "w") -> u)) `eq` tipHList # hBuild v u+        ]+   it "ttip 3" $ do     property $ do       f <- arbitrary@@ -343,7 +358,12 @@     show v `shouldBe` "[V{x='a'},V{y=\"ly\"}]"     read (show v) `shouldBe` v +#if __GLASGOW_HASKELL__ != 802 && __GLASGOW_HASKELL__ != 804+    -- ghc-8.2.1: typeIndexed' has: Couldn't match with  ‘*’ with ‘Symbol’+    -- probably a ghc bug as it (1) works in other version (2) works after in-lining     show (map (^. typeIndexed') v) `shouldBe` "[TIC{char='a'},TIC{[Char]=\"ly\"}]"+#endif+    show (map (^. simple . typeIndexed . simple) v) `shouldBe` "[TIC{char='a'},TIC{[Char]=\"ly\"}]"    it "Data instances gread/gshow" $ do     property $ do@@ -431,6 +451,26 @@           ru .!. lz === z,           r === ru ^. from unboxedS ] +  it "sortForRecordUS" $ do+    property $ do+      a :: Bool <- arbitrary+      b :: (Bool,Bool) <- arbitrary+      c :: Bool <- arbitrary+      d :: (Bool,Bool) <- arbitrary+      let r = [pun| a b c d |]+          sr = sortForRecordUS r+          ssr = sortForRecordUS sr++      return $ conjoin+        [ sr `eq` ssr,+          sr .!. (Label :: Label "a") === a,+          sr .!. (Label :: Label "b") === b,+          sr .!. (Label :: Label "c") === c,+          sr .!. (Label :: Label "d") === d,+          hRearrange' sr === r+        ]++   it "monoid0" $ do     mempty `shouldBe` HNil     mempty `shouldBe` emptyRecord@@ -502,9 +542,7 @@      return $ conjoin       [ v' `eq` (v & hPrism lx %~ not),-        tic' `eq` (tic & hLens' (Label :: Label Bool) %~ not),-        -- should work, but it doesn't-        -- tic' `eq` (tic & hLens' Label %~ not),+        tic' `eq` (tic & hLens' Label %~ not),         tic' `eq` (tic & ticPrism %~ not)       ] 
− examples/TIPTransform.hs
@@ -1,67 +0,0 @@-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}-{-# LANGUAGE ScopedTypeVariables, UndecidableInstances #-}---- Transforming a TIP: applying to a TIP a (polyvariadic) function--- that takes arguments from a TIP and updates the TIP with the result.--- --- In more detail: we have a typed-indexed collection TIP and we--- would like to apply a transformation function to it, whose argument--- types and the result type are all in the TIP. The function should locate--- its arguments based on their types, and update the TIP--- with the result. The function may have any number of arguments,--- including zero; the order of arguments should not matter.---- The problem was posed by Andrew U. Frank on Haskell-Cafe, Sep 10, 2009.--- http://www.haskell.org/pipermail/haskell-cafe/2009-September/066217.html--- The problem is an interesting variation of the keyword argument problem.--module TIPTransform where--import Data.HList-import Data.Typeable---- We start with the examples--newtype MyVal = MyVal Int deriving (Show, Typeable)---- or if no typeable, use--- instance ShowLabel MyVal where showLabel _ = "MyVal"---- A sample TIP-tip1 = MyVal 20 .*. (1::Int) .*. True .*. emptyTIP--- TIP (HCons (MyVal 20) (HCons 1 (HCons True HNil)))---- Update the Int component of tip1 to 2. The Int component must--- exist. Otherwise, it is a type error-tip2 = ttip (2::Int) tip1--- TIP (HCons (MyVal 20) (HCons 2 (HCons True HNil)))---- Negate the boolean component of tip1-tip3 = ttip not tip1--- TIP (HCons (MyVal 20) (HCons 1 (HCons False HNil)))---- Update the Int component from the values of two other components-tip4 = ttip (\(MyVal x) y -> x+y) tip1--- TIP (HCons (MyVal 20) (HCons 21 (HCons True HNil)))---- Update the MyVal component from the values of three other components-tip5 = ttip (\b (MyVal x) y -> MyVal $ if b then x+y else 0) tip1--- TIP (HCons (MyVal 21) (HCons 1 (HCons True HNil)))---- The same but with the permuted argument order.--- The order of arguments is immaterial: the values will be looked up using--- their types-tip5' = ttip (\b y (MyVal x)-> MyVal $ if b then x+y else 0) tip1--- TIP (HCons (MyVal 21) (HCons 1 (HCons True HNil)))---- The implementation--- part of HList proper now---main = mapM_ putStrLn [show tip1, show tip2, show tip3, show tip4,-		       show tip5, show tip5']
− examples/TIPTransform.ref
@@ -1,6 +0,0 @@-TIPH[MyVal 20,1,True]-TIPH[MyVal 20,2,True]-TIPH[MyVal 20,1,False]-TIPH[MyVal 20,21,True]-TIPH[MyVal 21,1,True]-TIPH[MyVal 21,1,True]
− examples/TIPTransformM.hs
@@ -1,130 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}-{-# LANGUAGE ScopedTypeVariables, UndecidableInstances #-}-{-# LANGUAGE TypeFamilies #-}  -- !TF--- Transforming a TIP: applying to a TIP a (polyvariadic) function--- that takes arguments from a TIP and updates the TIP with the result.--- The monadic version.--- This file contains two versions of the code.--- The comments -- !Simple and -- !TF distinguish the versions------ In more detail: we have a typed-indexed collection TIP and we--- would like to apply a transformation function to it, whose argument--- types and the result type are all in the TIP. The function should locate--- its arguments based on their types, and update the TIP--- with the result. The function may have any number of arguments,--- including zero; the order of arguments should not matter.---- The problem was posed by Andrew U. Frank on Haskell-Cafe, Sep 10, 2009.--- http://www.haskell.org/pipermail/haskell-cafe/2009-September/066217.html--- The problem is an interesting variation of the keyword argument problem.--- In March 2010, Andrew Frank extended the problem for monadic operations.--- This is the monadic version of TIPTransform.hs in the present directory.---module TIPTransformM where--import Data.HList.CommonMain-import Data.Typeable-import Control.Monad.Identity---- We start with the examples--newtype MyVal = MyVal Int deriving (Show,Typeable)---- A specialized version of return for the Identity monad.--- It is needed only for the Simple version of the code,--- to tell the type checker the monad in which the computation is--- taking place.--- For the TF version of the code, we can use the ordinary return--- in place of retI.-retI :: a -> Identity a-retI = return---- A sample TIP-tip1 = MyVal 20 .*. (1::Int) .*. True .*. (3.5::Float) .*. emptyTIP--- TIP (HCons (MyVal 20) (HCons 1 (HCons True (HCons 3.5 HNil))))---- Update the Int component of tip1 to 2. The Int component must--- exist. Otherwise, it is a type error--- tip2 = runIdentity $ ttipM (retI (2::Int)) tip1 -- !Simple-tip2 = runIdentity $ ttipM (return (2::Int)) tip1  -- !TF--- TIP (HCons (MyVal 20) (HCons 2 (HCons True (HCons 3.5 HNil))))----- Negate the boolean component of tip1--- tip3 = runIdentity $ ttipM (retI . not) tip1 -- !Simple-tip3 = runIdentity $ ttipM (return . not) tip1      -- !TF--- TIP (HCons (MyVal 20) (HCons 1 (HCons False (HCons 3.5 HNil))))---- Update the Int component from the values of two other components-tip4 = runIdentity $ ttipM (\(MyVal x) y -> retI $ x+y) tip1--- TIP (HCons (MyVal 20) (HCons 21 (HCons True (HCons 3.5 HNil))))---- Update the MyVal component from the values of three other components-tip5 = runIdentity $ -       ttipM (\b (MyVal x) y -> retI $ MyVal $ if b then x+y else 0) tip1--- TIP (HCons (MyVal 21) (HCons 1 (HCons True (HCons 3.5 HNil))))---- The same but with the permuted argument order.--- The order of arguments is immaterial: the values will be looked up using--- their types-tip5' = runIdentity $ -        ttipM (\b y (MyVal x)-> retI $ MyVal $ if b then x+y else 0) tip1--- TIP (HCons (MyVal 21) (HCons 1 (HCons True (HCons 3.5 HNil))))---- Andrew Frank's test--- tip6 :: IO (TIP (HCons MyVal (HCons Int (HCons Bool (HCons Float HNil)))))-tip6 :: IO (TIP (TagR [MyVal,Int,Bool, Float]))-tip6 = ttipM op6 tip1--op6 :: MyVal -> Bool -> IO MyVal-op6 (MyVal x) b = do-                let m = if b then MyVal (x `div` 4) else MyVal (x * 4)-                putStrLn $ "MyVal is now " ++ show m-                            -- ==>> MyVal 5-                return m--- TIP (HCons (MyVal 5) (HCons 1 (HCons True (HCons 3.5 HNil))))---{-  -- !Simple--- The Simple implementation--- The drawback is the need to let the type checker know the monad in which the--- computations take place. That is why we had to use retI in the above--- code, which is a specialized version of return for the Identity monad. --- In op6, the presence of putStrLn unambiguously specified the monad, viz. IO,--- so no special return are required.--class Monad m => TransTIPM m op db where-    ttipM :: op -> db -> m db---- If the operation is the computation in the desired monad,--- the type of the computation must match an element of TIP.-instance (Monad m,-	  HTypeIndexed db, HUpdateAtHNat n op db db, HType2HNat op db n)-    => TransTIPM  m (m op) (TIP db) where-    ttipM op db = do-                     op' <- op-		     return $ tipyUpdate op' db---- If op is not a computation in the desired monad m, --- it must be a function. Look up its argument in a TIP and recur.-instance (Monad m, HOccurs arg db, TransTIPM m op db)-    => TransTIPM m (arg -> op) db where-    ttipM f db = ttipM (f (hOccurs db)) db--} -- !Simple---- {- -- !TF--- Moved to TIP.hs--- -} -- !TF--main :: IO ()-main = do-            mapM_ putStrLn [show tip1, show tip2, show tip3, show tip4,-                    show tip5, show tip5']-            tip2 <- tip6-            putStrLn $ "tip2 is" ++ show tip2-            return ()-
− examples/TIPTransformM.ref
@@ -1,8 +0,0 @@-TIPH[MyVal 20,1,True,3.5]-TIPH[MyVal 20,2,True,3.5]-TIPH[MyVal 20,1,False,3.5]-TIPH[MyVal 20,21,True,3.5]-TIPH[MyVal 21,1,True,3.5]-TIPH[MyVal 21,1,True,3.5]-MyVal is now MyVal 5-tip2 isTIPH[MyVal 5,1,True,3.5]
− examples/broken/nn.hs
@@ -1,37 +0,0 @@-{-# LANGUAGE ConstraintKinds #-}-{-# OPTIONS_GHC -fcontext-stack=100 #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE DataKinds #-}--import Data.HList.CommonMain-import Control.Lens---makeLabelable (unwords [ "r" ++ show n | n <- [0 .. 9 :: Int] ])-r :: RecordU '[Tagged "r0" Int ,-              Tagged "r1" Int,-              Tagged "r2" Int,-              Tagged "r3" Int,-              Tagged "r4" Int,-              Tagged "r5" Int,-              Tagged "r6" Int,-              Tagged "r7" Int,-              Tagged "r8" Int,-              Tagged "r9" Int]-r = [1 .. 10] ^?! listAsHList . from unlabeled . unboxed----main = print $-  r^.r0 +-  r^.r1 +-  r^.r2 +-  r^.r3 +-  r^.r4 +-  r^.r5 +-  r^.r6 +-  r^.r7 +-  r^.r8 +-  r^.r9
− examples/cmdargs.hs
@@ -1,96 +0,0 @@-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE CPP #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE PolyKinds #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE TemplateHaskell #-}-module Main where-import System.Console.CmdArgs-import Data.HList.CommonMain-import Data.Generics-import Control.Lens-import System.Environment-import GHC.TypeLits (Symbol)-import Data.HList.Labelable(LabeledTo,ToSym)--{---An example showing off the data instance for Record / Variant / TIP / TIC--Also a use of cmdArgs--Note that ghc-7.8.2 does not have (or can produce) instances of typeable-for types of kind Symbol (ie. promoted strings):-<https://ghc.haskell.org/trac/ghc/ticket/9111>, so for now use the Label3-style---}--#define USE_LABEL3 __GLASGOW_HASKELL__ == 708--#if USE_LABEL3-makeLabels3 "examples_cmdargs" (words "x y z tic")-makeLabels3 "optV" (words "optA optB optC")-#else--- works for ghc-7.6-makeLabels6 (words "x y z tic")-makeLabels6 (words "optA optB optC")-#endif--makeLabelable "abc df"--#if USE_LABEL3--- XXX remove extra Label?-v = (optA .*. optB .*. optC .*. emptyProxy)-      `zipTagged` (Proxy :: Proxy '[Int,Char,Double])-#else-v = Proxy :: Proxy '[Tagged "optA" Int, Tagged "optB" Char, Tagged "optC" Double]-#endif--type Z' = TagR [Int, Char, Double]--d0 = x .=. (5 :: Int)-    .*. y .=. True-    .*. z .=. mkVariant optC (1 :: Double) v-    .*. tic .=. mkTIC' 'x' (Proxy :: Proxy Z')-    .*. emptyRecord---- the equivalent ordinary record for reference-data E = E { a :: Int, b :: Bool }-    deriving (Show, Data, Typeable)--data Opt = OptA Int | OptB Char | OptC Double-    deriving (Show, Data, Typeable)--e0 = E 5 True--main = do-    print d0-    print $ gmapT (mkT ((+1) :: Double -> Double)) (mkVariant optC 1 v)-    print $  (mkVariant optC 1 v)--    print $ gmapT (mkT not) d0-    print $ gmapT (mkT (+(1::Int))) d0--    let theB :: Typeable a => a-        theB = error "theB"-              `extB` (1::Int)-              `extB` True-              `extB` (2.5::Double)-              `extB` 'b'-              `extB` mkVariant optC theB v-              `extB` mkTIC' (theB :: Char) (Proxy :: Proxy Z')--    print $ fromConstrB theB undefined `asTypeOf` d0--    putStrLn "Cmdargs"-    print =<< withArgs ["-a=4", "-b=False" ] (cmdArgs e0)--    -- drop the tic and z fields (which cmdargs doesn't handle)-    let dRec = d0 & from hListRecord %~ (hInit . hInit)-    print =<< withArgs ["-x=4", "-y=False"] (cmdArgs dRec)
− examples/cmdargs.ref
@@ -1,9 +0,0 @@-Record{x=5,y=True,z=V{optC=1.0},tic=TIC{char='x'}}-V{optC=2.0}-V{optC=1.0}-Record{x=5,y=False,z=V{optC=1.0},tic=TIC{char='x'}}-Record{x=6,y=True,z=V{optC=1.0},tic=TIC{char='x'}}-Record{x=1,y=True,z=V{optC=2.5},tic=TIC{char='b'}}-Cmdargs-E {a = 4, b = False}-Record{x=4,y=False}
− examples/labelable.hs
@@ -1,47 +0,0 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE FlexibleContexts, TemplateHaskell, DataKinds, PolyKinds,-  GADTs, ConstraintKinds #-}-{- | Demonstrates @hLens'@--may be worthwhile to have a lens-free test suite, doing stuff like:--> case x (Identity  . (++"there")) r of Identity t -> t---}-module Main where-import Data.HList.CommonMain-import Control.Lens--import Text.Read--makeLabelable "x y"--#if __GLASGOW_HASKELL__ < 707-#define INT_SIG_76 :: Int-#else-#define INT_SIG_76-#endif--r = x .==. "hi" .*.-    y .==. (y .==. 321 .*. x .==. 123 .*. emptyRecord) .*.-    emptyRecord--main = do-    print (r ^. x)-    print (r & x .~ ())--    -- ghc-7.6 doesn't default when r is involved lower down,-    -- while 7.8.2 does-    print (r ^. y . y  INT_SIG_76)-    print (r ^. y . x  INT_SIG_76)--    print (r & y . y .~ "xy")--    putStrLn "\nread-show"-    print (readMaybe (show r) `asTypeOf` Just r)-    print (readMaybe "Record{x=\"hi\",y=Record{y=321,x=123}}" `asTypeOf` Just r)--    -- there is no permuting of labels-    print (readMaybe "Record{y=Record{y=321,x=123},x=\"hi\"}" `asTypeOf` Just r)--    print $ (r ^. rearranged) `asTypeOf` (undefined :: Record '[Tagged "y" t, Tagged "x" s])
− examples/labelable.ref
@@ -1,11 +0,0 @@-"hi"-Record{x=(),y=Record{y=321,x=123}}-321-123-Record{x="hi",y=Record{y="xy",x=123}}--read-show-Just Record{x="hi",y=Record{y=321,x=123}}-Just Record{x="hi",y=Record{y=321,x=123}}-Nothing-Record{y=Record{y=321,x=123},x="hi"}
− examples/lens.hs
@@ -1,62 +0,0 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE TemplateHaskell, DataKinds, PolyKinds #-}-{- | Demonstrates @hLens@. See also labelable.hs which is more "convenient"---}-module Main where-import Data.HList.CommonMain-import Control.Lens--makeLabels6 (words "x y z")---#if __GLASGOW_HASKELL__ > 707-yRec = y .=. 321 .*. x .=. 123 .*. emptyRecord-#else--- defaulting doesn't work in ghc-7.6.3-yRec = y .=. (321 :: Integer) .*. x .=. (123 :: Integer) .*. emptyRecord-#endif--r = x .=. "hi" .*.-    y .=. yRec .*.-    emptyRecord---_ = (r^.y') `asTypeOf` hRearrange'-    (x .=. 1 .*. y .=. 1 .*. emptyRecord)--rSmall = x .=. "" .*. emptyRecord--x' a = hLens x a-y' a = hLens y a--main = do-    print (view (hLens x) r)-    print (set (hLens x) () r)--    print (r ^. hLens y . hLens x)-    print (r & hLens y . hLens y .~ "xy")---    putStrLn "\n\nand repeat:"--    -- and now for with hLens applied second-    print (view x' r)-    print (set x' () r)--    print (r ^. y' . y')-    print (r & y' . y' .~ "xy")--    putStrLn "\n\nIsos"-    print (r & sameLength . unlabeled . hTuple . _1 .~ ())-    print (r & sameLength . unlabeled . hTuple . _2 .~ ())-    print (z .=. () .*. r-              & unlabeled' . from tipHList %~ ttip (\x z -> x ++ show (z :: ())))--    r ^. unlabeled . from tipHList & tipPutStrLn---tipPutStrLn tip = ttipM ?? tip $ \x -> do-  putStrLn x-  return x
− examples/lens.ref
@@ -1,19 +0,0 @@-"hi"-Record{x=(),y=Record{y=321,x=123}}-123-Record{x="hi",y=Record{y="xy",x=123}}---and repeat:-"hi"-Record{x=(),y=Record{y=321,x=123}}-321-Record{x="hi",y=Record{y="xy",x=123}}---Isos-Record{x=(),y=Record{y=321,x=123}}-Record{x="hi",y=()}-Record{z=(),x="hi()",y=Record{y=321,x=123}}-hi-TIPH["hi",Record{y=321,x=123}]
− examples/prism.hs
@@ -1,120 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE QuasiQuotes #-} -- for pun-{-# LANGUAGE TemplateHaskell #-}-module Main where-import Data.HList.CommonMain-import Data.HList.Labelable (hLens')-import Control.Lens---- generate left = Label :: Label "left"-makeLabels6 (words "left right up down")----- define the Labelable labels manually-left_ = hLens' left-right_ = hLens' right-up_ = hLens' up-down_ = hLens' down---- this definition is needed to decide what order--- to put the fields in, as well as their initial types-r = [pun|right left up|] where-  left = 'a'-  right = 2 :: Int-  up = 2.3 :: Double--v = mkVariant left 'x' r--main = do-    putStrLn "Lookup and set"-    inspectV--    putStrLn "\nrepeat with Labelable"-    inspectV_--    putStrLn "\nSetting the missing tag does nothing:"-    print $ set right_ () v-    Left 'x' <- set _Right () (Left 'x') -- prisms for Either do the same thing-                & return--    putStrLn "\nLenses compose:"-    Nothing  <- v3 ^? up_.up_ & return-    Just 'x' <- v3 ^? left_ & return-    v4 ^? left_.left_ & print--    putStrLn "\nLenses+prisms compose:"-    inspectRV--    putStrLn "\n\"extension\""-    extensionTests--    putStrLn "\nInternal Structure:"-    putStrLn $ indent $ show vs----lazyX = mkVariant (Label :: Label "x") 'a' lazyProto-lazyY = mkVariant (Label :: Label "y") (2.5 :: Double) lazyProto--lazyProto = undefined :: Record-  '[Tagged "x" x, Tagged "y" y]--vs = [pun| v v2 v2' v3 v4 v5 v6 v7 |]--inspectV = do-    v ^? hPrism left & print-    v ^? hPrism right & print-    v ^? hPrism up & print-    v2 ^? hPrism left & print---- note that we can change the type of the 'x' field--- from Char to ()-v2 = set (hPrism left) () v--inspectV_ = do-    v ^? left_ & print-    v ^? right_ & print-    v ^? up_ & print-    v2' ^? left_ & print---inspectRV = do-    r2 ^? down_.left_ & print-    r2 ^? down_.right_ & print-    r2 ^? du & print--du = down_.up_--r2 = down_ .==. v .*. r----- or with the "better" label-v2' = set left_ () v---v3 = v & up_ .~ v & up_.up_ .~ "upup"-v4 = v & left_ .~ v & left_.left_ .~ "leftleft"---extensionTests = do-    Just "hi" <- v5 ^? down_ & return-    Just "hi" <- v6 ^? down_ & return-    Nothing   <- v7 ^? down_ & return-    Just 'x'  <- v7 ^? left_ & return-    return ()---v5 = down .=. Just "hi" .*. v-v6 = down_ .==. Just "hi" .*. v-v7 = down .=. (Nothing :: Maybe String) .*. v---- start a newline after every } to make the results readable-indent :: String -> String-indent xs = indent' 0 xs--indent' n xs | n < 0 = indent' 0 xs-indent' n ('}' : xs) = "}\n" ++ replicate n ' ' ++ indent' (n-4) xs-indent' n ('{' : xs) = '{' : indent' (n+4) xs-indent' n (x : xs) = x : indent' n xs-indent' _ [] = []
− examples/prism.ref
@@ -1,37 +0,0 @@-Lookup and set-Just 'x'-Nothing-Nothing-Just ()--repeat with Labelable-Just 'x'-Nothing-Nothing-Just ()--Setting the missing tag does nothing:-V{left='x'}--Lenses compose:-Just "leftleft"--Lenses+prisms compose:-Just 'x'-Nothing-Nothing--"extension"--Internal Structure:-Record{v=V{left='x'}-        ,v2=V{left=()}-        ,v2'=V{left=()}-        ,v3=V{left='x'}-        ,v4=V{left=V{left="leftleft"}-            }-        ,v5=V{down="hi"}-        ,v6=V{down="hi"}-        ,v7=V{left='x'}-        }-    
− examples/pun.hs
@@ -1,48 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE ViewPatterns #-}--- more examples for record puns-module Main where-import Data.HList.CommonMain--makeLabels6 (words "a b c")---r  = c .=. "c" .*. b .=. (a .=. 3 .*. emptyRecord) .*. emptyRecord-r2 = b .=. (a .=. 1 .*. emptyRecord) .*. emptyRecord---p1 ( (.!. b) -> (b @ ((.!. a) -> a))) = (a,b)--p2 [pun| b @ {a} |] = (a, b)---- same as p2, but gives a warning--- p3 [pun| b @ a |] = (a, b)--p4 [pun| b{a} |] = a -- b is not bound---- adds `x' and `y' into a field called r-e1 = let x = 1; y = "hi" in [pun| r @ { x y } |]---- updates the `c' field-e2 = let c = 1; y = "hi" in [pun| r @ { c y } |]---- same as e1, but doesn't use a pre-existing r-e3 = let x = 1; y = "hi" in [pun| r { x y } |]---main = do-        putStrLn "similar:"-        print $ p1 r-        print $ p2 r-        print $ p4 r--        putStrLn "\nexpression QQ:"-        print $ e1-        print $ e2-        print $ e3-
− examples/pun.ref
@@ -1,9 +0,0 @@-similar:-(3,Record{a=3})-(3,Record{a=3})-3--expression QQ:-Record{r=Record{x=1,y="hi",c="c",b=Record{a=3}}}-Record{r=Record{c=1,y="hi",b=Record{a=3}}}-Record{r=Record{x=1,y="hi"}}
− examples/runexamples.hs
@@ -1,59 +0,0 @@-module Main where--import Cabal-import Control.Exception-import System.FilePath-import Test.Hspec-import System.Exit-import System.Process-import System.Directory-import Data.Maybe-import Control.Monad--main = do-  es <- getDirectoryContents "examples"-  print es-  -- very dumb-  es <- filterM (\e -> allM-    [return (takeExtension e == ".hs"),-     doesFileExist (dropExtension ("examples"</>e) ++ ".ref") ]) es--  print es--  hspec $ do-    mapM_ runghcwith es---runghcwith f = describe f $ it "ok" $-  do-    let ex = ("examples" </>)-    let inFile = ex (takeBaseName f)-        outFile = dropExtension inFile ++ ".out"-        errFile = dropExtension inFile ++ ".err"-        refFile = dropExtension inFile ++ ".ref"--    (ec, stdout, stderr) <- cabal-            ["repl","examples",-              "-v0", "--ghc-options", "-w -fcontext-stack=50 -iexamples -v0"]-              (":set -i\n:set -iexamples\n:load " ++ inFile ++ "\nmain")--    writeFile outFile stdout--    ofe <- doesFileExist refFile-    diff <- if ofe-      then fmap Just $-        readProcess "diff" ["-b", outFile, refFile] ""-          `finally` writeFile errFile stderr-      else return Nothing--    unless (diff == Just "") $ writeFile errFile stderr--    return (ec, stderr, diff)- `shouldReturn` (ExitSuccess, "", Just "")----allM [] = return True-allM (x:xs) = do-    x <- x-    if x then allM xs else return False