packages feed

red-black-record 2.1.4.0 → 2.1.6.0

raw patch · 9 files changed

+263/−53 lines, 9 filesdep −aesondep −bytestringdep −doctestPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: aeson, bytestring, doctest, profunctors, text

API changes (from Hackage documentation)

- Data.RBR: Case :: (f b -> a) -> Case f a b
- Data.RBR: Comp :: f (g p) -> (:.:)
- Data.RBR: I :: a -> I a
- Data.RBR: K :: a -> K a
- Data.RBR: VariantInjection :: (f v -> Variant f t) -> VariantInjection
- Data.RBR: [:*] :: forall k (a :: k -> Type) (b :: [k]) (x :: k) (xs :: [k]). () => a x -> NP a xs -> NP a (x : xs)
- Data.RBR: [Nil] :: forall k (a :: k -> Type) (b :: [k]). () => NP a ([] :: [k])
- Data.RBR: [S] :: forall k (a :: k -> Type) (b :: [k]) (xs :: [k]) (x :: k). () => NS a xs -> NS a (x : xs)
- Data.RBR: [Z] :: forall k (a :: k -> Type) (b :: [k]) (x :: k) (xs :: [k]). () => a x -> NS a (x : xs)
- Data.RBR: [runCase] :: Case f a b -> f b -> a
- Data.RBR: [runVariantInjection] :: VariantInjection -> f v -> Variant f t
- Data.RBR: _breakNP :: Productlike start t result => NP f result -> (Record f t, NP f start)
- Data.RBR: _breakNS :: Sumlike start t result => NS f result -> Either (NS f start) (Variant f t)
- Data.RBR: _prefixNP :: Productlike start t result => Record f t -> NP f start -> NP f result
- Data.RBR: _prefixNS :: Sumlike start t result => Either (NS f start) (Variant f t) -> NS f result
- Data.RBR: addCase :: forall k v t f a. Insertable k v t => (f v -> a) -> Record (Case f a) t -> Record (Case f a) (Insert k v t)
- Data.RBR: addCaseI :: forall k v t a. Insertable k v t => (v -> a) -> Record (Case I a) t -> Record (Case I a) (Insert k v t)
- Data.RBR: addField :: forall k v t f. Insertable k v t => f v -> Record f t -> Record f (Insert k v t)
- Data.RBR: addFieldI :: forall k v t. Insertable k v t => v -> Record I t -> Record I (Insert k v t)
- Data.RBR: branch :: forall k t f. Key k t => Branch f t (Value k t)
- Data.RBR: branchSubset :: forall subset whole subflat wholeflat f. SumlikeSubset subset whole subflat wholeflat => (Variant f whole -> Maybe (Variant f subset), Variant f subset -> Variant f whole)
- Data.RBR: breakNP :: forall start t result f. Productlike start t result => NP f result -> (Record f t, NP f start)
- Data.RBR: breakNS :: forall start t result f. Sumlike start t result => NS f result -> Either (NS f start) (Variant f t)
- Data.RBR: class (f x, g x) => And (f :: k -> Constraint) (g :: k -> Constraint) (x :: k)
- Data.RBR: class Deletable (k :: Symbol) (v :: q) (t :: Map Symbol q) where {
- Data.RBR: class ToRecord r => FromRecord (r :: Type)
- Data.RBR: class FromVariant (s :: Type)
- Data.RBR: class Insertable (k :: Symbol) (v :: q) (t :: Map Symbol q) where {
- Data.RBR: class Key (k :: Symbol) (t :: Map Symbol q) where {
- Data.RBR: class (kc k, vc v) => KeyValueConstraints (kc :: Symbol -> Constraint) (vc :: q -> Constraint) (k :: Symbol) (v :: q)
- Data.RBR: class KeysValuesAllF c t => KeysValuesAll (c :: symbol -> q -> Constraint) (t :: Map symbol q)
- Data.RBR: class KnownSymbol k => KnownKey (k :: Symbol) (v :: q)
- Data.RBR: class (KnownSymbol k, Typeable v) => KnownKeyTypeableValue (k :: Symbol) (v :: q)
- Data.RBR: class Maplike (t :: Map Symbol Type)
- Data.RBR: class (Key k t, Value k t ~ v) => PresentIn (t :: Map Symbol q) (k :: Symbol) (v :: q)
- Data.RBR: class Productlike (start :: [k]) (t :: Map Symbol k) (result :: [k]) | start t -> result, result t -> start
- Data.RBR: class Sumlike (start :: [k]) (t :: Map Symbol k) (result :: [k]) | start t -> result, result t -> start
- Data.RBR: class ToRecord (r :: Type) where {
- Data.RBR: class ToVariant (s :: Type)
- Data.RBR: class Top (x :: k)
- Data.RBR: class (vc v) => ValueConstraint (vc :: q -> Constraint) (k :: Symbol) (v :: q)
- Data.RBR: collapse'_Record :: (Maplike t, Monoid a) => Record (K a) t -> a
- Data.RBR: collapse_Record :: forall t result a. Productlike '[] t result => Record (K a) t -> [a]
- Data.RBR: collapse_Variant :: Maplike t => Variant (K a) t -> a
- Data.RBR: cpure'_Record :: forall c t f. KeysValuesAll (KeyValueConstraints KnownSymbol c) t => Proxy c -> (forall v. c v => String -> f v) -> Record f t
- Data.RBR: cpure_Record :: forall c t f. KeysValuesAll c t => Proxy c -> (forall k v. c k v => f v) -> Record f t
- Data.RBR: data Map symbol q
- Data.RBR: data Record (f :: q -> Type) (t :: Map Symbol q)
- Data.RBR: data Variant (f :: q -> Type) (t :: Map Symbol q)
- Data.RBR: data NS (a :: k -> Type) (b :: [k]) :: forall k. () => k -> Type -> [k] -> Type
- Data.RBR: delete :: forall k v t f. Deletable k v t => Record f t -> Record f (Delete k v t)
- Data.RBR: demoteEntries :: forall t. KeysValuesAll KnownKeyTypeableValue t => Record (K (String, TypeRep)) t
- Data.RBR: demoteKeys :: forall t. KeysValuesAll KnownKey t => Record (K String) t
- Data.RBR: eliminate :: (Productlike '[] t result, Sumlike '[] t result, SListI result) => Record (Case f r) t -> Variant f t -> r
- Data.RBR: eliminateSubset :: forall subset whole subflat wholeflat f r. SumlikeSubset subset whole subflat wholeflat => Record (Case f r) whole -> Variant f subset -> r
- Data.RBR: eliminate_Variant :: Maplike t => Record (Case f r) t -> Variant f t -> r
- Data.RBR: field :: forall k t f. Key k t => Field f t (Value k t)
- Data.RBR: fieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f whole -> (Record f subset -> Record f whole, Record f subset)
- Data.RBR: fromNP :: forall t result f. Productlike '[] t result => NP f result -> Record f t
- Data.RBR: fromNS :: forall t result f. Sumlike '[] t result => NS f result -> Variant f t
- Data.RBR: fromRecord :: (FromRecord r, Generic r, FromRecordHelper (RecordCode r) (Rep r)) => Record I (RecordCode r) -> r
- Data.RBR: fromVariant :: (FromVariant s, Generic s, FromVariantHelper (VariantCode s) (Rep s)) => Variant I (VariantCode s) -> s
- Data.RBR: getField :: forall k t f. Key k t => Record f t -> f (Value k t)
- Data.RBR: getFieldI :: forall k t. Key k t => Record I t -> Value k t
- Data.RBR: getFieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f whole -> Record f subset
- Data.RBR: impossible :: Variant f Empty -> b
- Data.RBR: infixl 7 `And`
- Data.RBR: infixr 5 :*
- Data.RBR: infixr 7 :.:
- Data.RBR: inject :: forall k t f. Key k t => f (Value k t) -> Variant f t
- Data.RBR: injectI :: forall k t. Key k t => Value k t -> Variant I t
- Data.RBR: injectSubset :: forall subset whole subflat wholeflat f. SumlikeSubset subset whole subflat wholeflat => Variant f subset -> Variant f whole
- Data.RBR: injections'_Variant :: Maplike t => Record (Case f (Variant f t)) t
- Data.RBR: injections_Record :: Maplike t => Record (Case f (Endo (Record f t))) t
- Data.RBR: injections_Variant :: Maplike t => Record (VariantInjection f t) t
- Data.RBR: insert :: forall k v t f. Insertable k v t => f v -> Record f t -> Record f (Insert k v t)
- Data.RBR: insertI :: forall k v t. Insertable k v t => v -> Record I t -> Record I (Insert k v t)
- Data.RBR: liftA2_Record :: Maplike t => (forall a. f a -> g a -> h a) -> Record f t -> Record g t -> Record h t
- Data.RBR: liftA2_Variant :: Maplike t => (forall a. f a -> g a -> h a) -> Record f t -> Variant g t -> Variant h t
- Data.RBR: liftA_Record :: Maplike t => (forall a. f a -> g a) -> Record f t -> Record g t
- Data.RBR: liftA_Variant :: Maplike t => (forall a. f a -> g a) -> Variant f t -> Variant g t
- Data.RBR: match :: forall k t f. Key k t => Variant f t -> Maybe (f (Value k t))
- Data.RBR: matchI :: forall k t. Key k t => Variant I t -> Maybe (Value k t)
- Data.RBR: matchSubset :: forall subset whole subflat wholeflat f. SumlikeSubset subset whole subflat wholeflat => Variant f whole -> Maybe (Variant f subset)
- Data.RBR: modifyField :: forall k t f. Key k t => (f (Value k t) -> f (Value k t)) -> Record f t -> Record f t
- Data.RBR: modifyFieldI :: forall k t. Key k t => (Value k t -> Value k t) -> Record I t -> Record I t
- Data.RBR: modifyFieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => (Record f subset -> Record f subset) -> Record f whole -> Record f whole
- Data.RBR: newtype Case f a b
- Data.RBR: newtype I a
- Data.RBR: newtype K a (b :: k) :: forall k. () => Type -> k -> Type
- Data.RBR: newtype VariantInjection (f :: q -> Type) (t :: Map Symbol q) (v :: q)
- Data.RBR: newtype (:.:) (f :: l -> Type) (g :: k -> l) (p :: k) :: forall l k. () => l -> Type -> k -> l -> k -> Type
- Data.RBR: prefixNP :: forall start t result f. Productlike start t result => Record f t -> NP f start -> NP f result
- Data.RBR: prefixNS :: forall start t result f. Sumlike start t result => Either (NS f start) (Variant f t) -> NS f result
- Data.RBR: prettyShowRecord :: forall t flat f. (KeysValuesAll KnownKey t, Productlike '[] t flat, All Show flat, SListI flat) => (forall x. Show x => f x -> String) -> Record f t -> String
- Data.RBR: prettyShowRecordI :: forall t flat. (KeysValuesAll KnownKey t, Productlike '[] t flat, All Show flat, SListI flat) => Record I t -> String
- Data.RBR: prettyShowVariant :: forall t flat f. (KeysValuesAll KnownKey t, Productlike '[] t flat, Sumlike '[] t flat, All Show flat, SListI flat) => (forall x. Show x => f x -> String) -> Variant f t -> String
- Data.RBR: prettyShowVariantI :: forall t flat. (KeysValuesAll KnownKey t, Productlike '[] t flat, Sumlike '[] t flat, All Show flat, SListI flat) => Variant I t -> String
- Data.RBR: prettyShow_Record :: forall t f. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => (forall x. Show x => f x -> String) -> Record f t -> String
- Data.RBR: prettyShow_RecordI :: forall t. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => Record I t -> String
- Data.RBR: prettyShow_Variant :: forall t flat f. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => (forall x. Show x => f x -> String) -> Variant f t -> String
- Data.RBR: prettyShow_VariantI :: forall t flat. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => Variant I t -> String
- Data.RBR: project :: forall k t f. Key k t => Record f t -> f (Value k t)
- Data.RBR: projectI :: forall k t. Key k t => Record I t -> Value k t
- Data.RBR: projectSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f whole -> Record f subset
- Data.RBR: pure_Record :: Maplike t => (forall v. f v) -> Record f t
- Data.RBR: sequence'_Record :: (Maplike t, Applicative f) => Record (f :.: g) t -> f (Record g t)
- Data.RBR: sequence_Record :: (Maplike t, Applicative f) => Record f t -> f (Record I t)
- Data.RBR: setField :: forall k t f. Key k t => f (Value k t) -> Record f t -> Record f t
- Data.RBR: setFieldI :: forall k t. Key k t => Value k t -> Record I t -> Record I t
- Data.RBR: setFieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f subset -> Record f whole -> Record f whole
- Data.RBR: toNP :: forall t result f. Productlike '[] t result => Record f t -> NP f result
- Data.RBR: toNS :: forall t result f. Sumlike '[] t result => Variant f t -> NS f result
- Data.RBR: toRecord :: (ToRecord r, Generic r, ToRecordHelper E (Rep r), RecordCode r ~ RecordCode' E (Rep r)) => r -> Record I (RecordCode r)
- Data.RBR: toVariant :: (ToVariant s, Generic s, ToVariantHelper (VariantCode s) (Rep s)) => s -> Variant I (VariantCode s)
- Data.RBR: type Empty = E
- Data.RBR: type FromList (es :: [(Symbol, q)]) = InsertAll es Empty
- Data.RBR: type IsRecordType (r :: Type) (t :: Map Symbol Type) = (Generic r, ToRecord r, RecordCode r ~ t, FromRecord r)
- Data.RBR: type IsVariantType (v :: Type) (t :: Map Symbol Type) = (Generic v, ToVariant v, VariantCode v ~ t, FromVariant v)
- Data.RBR: type ProductlikeSubset (subset :: Map Symbol q) (whole :: Map Symbol q) (flat :: [q]) = (KeysValuesAll (PresentIn whole) subset, Productlike '[] subset flat, SListI flat)
- Data.RBR: type RecordCode r = RecordCode' E (Rep r);
- Data.RBR: type SumlikeSubset (subset :: Map Symbol q) (whole :: Map Symbol q) (subflat :: [q]) (wholeflat :: [q]) = (KeysValuesAll (PresentIn whole) subset, Productlike '[] whole wholeflat, Sumlike '[] whole wholeflat, SListI wholeflat, Productlike '[] subset subflat, Sumlike '[] subset subflat, SListI subflat)
- Data.RBR: type family VariantCode (s :: Type) :: Map Symbol Type
- Data.RBR: unI :: () => I a -> a
- Data.RBR: unK :: () => K a b -> a
- Data.RBR: unit :: Record f Empty
- Data.RBR: widen :: forall k v t f. Insertable k v t => Variant f t -> Variant f (Insert k v t)
- Data.RBR: winnow :: forall k v t f. Deletable k v t => Variant f t -> Either (Variant f (Delete k v t)) (f v)
- Data.RBR: winnowI :: forall k v t. Deletable k v t => Variant I t -> Either (Variant I (Delete k v t)) v
- Data.RBR: }
- Data.RBR.Internal: B :: Color
- Data.RBR.Internal: BalanceLL :: BalanceAction
- Data.RBR.Internal: BalanceLR :: BalanceAction
- Data.RBR.Internal: BalanceRL :: BalanceAction
- Data.RBR.Internal: BalanceRR :: BalanceAction
- Data.RBR.Internal: BalanceSpecial :: BalanceAction
- Data.RBR.Internal: Case :: (f b -> a) -> Case f a b
- Data.RBR.Internal: DoNotBalance :: BalanceAction
- Data.RBR.Internal: E :: Map symbol q
- Data.RBR.Internal: N :: Color -> Map symbol q -> symbol -> q -> Map symbol q -> Map symbol q
- Data.RBR.Internal: R :: Color
- Data.RBR.Internal: SetField :: (f b -> a -> a) -> SetField f a b
- Data.RBR.Internal: VariantInjection :: (f v -> Variant f t) -> VariantInjection
- Data.RBR.Internal: [Empty] :: Record f E
- Data.RBR.Internal: [Here] :: f v -> Variant f (N color left k v right)
- Data.RBR.Internal: [LookLeft] :: Variant f t -> Variant f (N color' t k' v' right')
- Data.RBR.Internal: [LookRight] :: Variant f t -> Variant f (N color' left' k' v' t)
- Data.RBR.Internal: [Node] :: Record f left -> f v -> Record f right -> Record f (N color left k v right)
- Data.RBR.Internal: [getSetField] :: SetField f a b -> f b -> a -> a
- Data.RBR.Internal: [runCase] :: Case f a b -> f b -> a
- Data.RBR.Internal: [runVariantInjection] :: VariantInjection -> f v -> Variant f t
- Data.RBR.Internal: _branch :: Key k t => Branch f t (Value k t)
- Data.RBR.Internal: _breakNP :: Productlike start t result => NP f result -> (Record f t, NP f start)
- Data.RBR.Internal: _breakNS :: Sumlike start t result => NS f result -> Either (NS f start) (Variant f t)
- Data.RBR.Internal: _delete :: Deletable k v t => Record f t -> Record f (Delete k v t)
- Data.RBR.Internal: _field :: Key k t => Field f t (Value k t)
- Data.RBR.Internal: _insert :: Insertable k v t => f v -> Record f t -> Record f (Insert k v t)
- Data.RBR.Internal: _prefixNP :: Productlike start t result => Record f t -> NP f start -> NP f result
- Data.RBR.Internal: _prefixNS :: Sumlike start t result => Either (NS f start) (Variant f t) -> NS f result
- Data.RBR.Internal: _widen :: Insertable k v t => Variant f t -> Variant f (Insert k v t)
- Data.RBR.Internal: _winnow :: Deletable k v t => Variant f t -> Either (Variant f (Delete k v t)) (f v)
- Data.RBR.Internal: addCase :: forall k v t f a. Insertable k v t => (f v -> a) -> Record (Case f a) t -> Record (Case f a) (Insert k v t)
- Data.RBR.Internal: addCaseI :: forall k v t a. Insertable k v t => (v -> a) -> Record (Case I a) t -> Record (Case I a) (Insert k v t)
- Data.RBR.Internal: addField :: forall k v t f. Insertable k v t => f v -> Record f t -> Record f (Insert k v t)
- Data.RBR.Internal: addFieldI :: forall k v t. Insertable k v t => v -> Record I t -> Record I (Insert k v t)
- Data.RBR.Internal: balLR :: BalanceableL l k v r => Record f (N color l k v r) -> Record f (BalL l k v r)
- Data.RBR.Internal: balLR' :: BalanceableHelperL b l k v r => Record f (N color l k v r) -> Record f (BalL' b l k v r)
- Data.RBR.Internal: balLV :: BalanceableL l k v r => Variant f (N color l k v r) -> Variant f (BalL l k v r)
- Data.RBR.Internal: balLV' :: BalanceableHelperL b l k v r => Variant f (N color l k v r) -> Variant f (BalL' b l k v r)
- Data.RBR.Internal: balRR :: BalanceableR l k v r => Record f (N color l k v r) -> Record f (BalR l k v r)
- Data.RBR.Internal: balRR' :: BalanceableHelperR b l k v r => Record f (N color l k v r) -> Record f (BalR' b l k v r)
- Data.RBR.Internal: balRV :: BalanceableR l k v r => Variant f (N color l k v r) -> Variant f (BalR l k v r)
- Data.RBR.Internal: balRV' :: BalanceableHelperR b l k v r => Variant f (N color l k v r) -> Variant f (BalR' b l k v r)
- Data.RBR.Internal: balanceR :: Balanceable left k v right => Record f (N color left k v right) -> Record f (Balance left k v right)
- Data.RBR.Internal: balanceR' :: BalanceableHelper action left k v right => Record f (N color left k v right) -> Record f (Balance' action left k v right)
- Data.RBR.Internal: balanceV :: Balanceable left k v right => Variant f (N color left k v right) -> Variant f (Balance left k v right)
- Data.RBR.Internal: balanceV' :: BalanceableHelper action left k v right => Variant f (N color left k v right) -> Variant f (Balance' action left k v right)
- Data.RBR.Internal: branch :: forall k t f. Key k t => Branch f t (Value k t)
- Data.RBR.Internal: branch' :: KeyHelper ordering k left v right => Branch f (N colorx left kx v right) (Value' ordering k left v right)
- Data.RBR.Internal: branchSubset :: forall subset whole subflat wholeflat f. SumlikeSubset subset whole subflat wholeflat => (Variant f whole -> Maybe (Variant f subset), Variant f subset -> Variant f whole)
- Data.RBR.Internal: breakNP :: forall start t result f. Productlike start t result => NP f result -> (Record f t, NP f start)
- Data.RBR.Internal: breakNS :: forall start t result f. Sumlike start t result => NS f result -> Either (NS f start) (Variant f t)
- Data.RBR.Internal: class Balanceable (left :: Map Symbol q) (k :: Symbol) (v :: q) (right :: Map Symbol q) where {
- Data.RBR.Internal: class BalanceableHelper (action :: BalanceAction) (left :: Map Symbol q) (k :: Symbol) (v :: q) (right :: Map Symbol q) where {
- Data.RBR.Internal: class BalanceableHelperL (b :: Bool) (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class BalanceableHelperR (b :: Bool) (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class BalanceableL (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class BalanceableR (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class CanMakeBlack (t :: Map Symbol k) where {
- Data.RBR.Internal: class Delable (k :: Symbol) (v :: q) (t :: Map Symbol q) where {
- Data.RBR.Internal: class DelableHelper (ordering :: Ordering) (k :: Symbol) (v :: q) (l :: Map Symbol q) (kx :: Symbol) (vx :: q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class DelableL (k :: Symbol) (v :: q) (l :: Map Symbol q) (kx :: Symbol) (vx :: q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class DelableR (k :: Symbol) (v :: q) (l :: Map Symbol q) (kx :: Symbol) (vx :: q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class Deletable (k :: Symbol) (v :: q) (t :: Map Symbol q) where {
- Data.RBR.Internal: class ToRecord r => FromRecord (r :: Type)
- Data.RBR.Internal: class FromRecordHelper (t :: Map Symbol Type) (g :: Type -> Type)
- Data.RBR.Internal: class FromVariant (s :: Type)
- Data.RBR.Internal: class FromVariantHelper (t :: Map Symbol Type) (g :: Type -> Type)
- Data.RBR.Internal: class Fuseable (l :: Map Symbol q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class FuseableHelper1 (fused :: Map Symbol q) (l :: Map Symbol q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class FuseableHelper2 (fused :: Map Symbol q) (l :: Map Symbol q) (r :: Map Symbol q) where {
- Data.RBR.Internal: class Insertable (k :: Symbol) (v :: q) (t :: Map Symbol q) where {
- Data.RBR.Internal: class InsertableHelper1 (k :: Symbol) (v :: q) (t :: Map Symbol q) where {
- Data.RBR.Internal: class InsertableHelper2 (ordering :: Ordering) (k :: Symbol) (v :: q) (color :: Color) (left :: Map Symbol q) (k' :: Symbol) (v' :: q) (right :: Map Symbol q) where {
- Data.RBR.Internal: class Key (k :: Symbol) (t :: Map Symbol q) where {
- Data.RBR.Internal: class KeyHelper (ordering :: Ordering) (k :: Symbol) (left :: Map Symbol q) (v :: q) (right :: Map Symbol q) where {
- Data.RBR.Internal: class (kc k, vc v) => KeyValueConstraints (kc :: Symbol -> Constraint) (vc :: q -> Constraint) (k :: Symbol) (v :: q)
- Data.RBR.Internal: class KeysValuesAllF c t => KeysValuesAll (c :: symbol -> q -> Constraint) (t :: Map symbol q)
- Data.RBR.Internal: class KnownSymbol k => KnownKey (k :: Symbol) (v :: q)
- Data.RBR.Internal: class (KnownSymbol k, Typeable v) => KnownKeyTypeableValue (k :: Symbol) (v :: q)
- Data.RBR.Internal: class Maplike (t :: Map Symbol Type)
- Data.RBR.Internal: class (Key k t, Value k t ~ v) => PresentIn (t :: Map Symbol q) (k :: Symbol) (v :: q)
- Data.RBR.Internal: class Productlike (start :: [k]) (t :: Map Symbol k) (result :: [k]) | start t -> result, result t -> start
- Data.RBR.Internal: class Sumlike (start :: [k]) (t :: Map Symbol k) (result :: [k]) | start t -> result, result t -> start
- Data.RBR.Internal: class ToRecord (r :: Type) where {
- Data.RBR.Internal: class ToRecordHelper (start :: Map Symbol Type) (g :: Type -> Type) where {
- Data.RBR.Internal: class ToVariant (s :: Type)
- Data.RBR.Internal: class ToVariantHelper (t :: Map Symbol Type) (g :: Type -> Type)
- Data.RBR.Internal: class (vc v) => ValueConstraint (vc :: q -> Constraint) (k :: Symbol) (v :: q)
- Data.RBR.Internal: collapse'_Record :: (Maplike t, Monoid a) => Record (K a) t -> a
- Data.RBR.Internal: collapse_Record :: forall t result a. Productlike '[] t result => Record (K a) t -> [a]
- Data.RBR.Internal: collapse_Variant :: Maplike t => Variant (K a) t -> a
- Data.RBR.Internal: cpara_Map :: KeysValuesAll c t => proxy c -> r E -> (forall left k v right color. (c k v, KeysValuesAll c left, KeysValuesAll c right) => r left -> r right -> r (N color left k v right)) -> r t
- Data.RBR.Internal: cpure'_Record :: forall c t f. KeysValuesAll (KeyValueConstraints KnownSymbol c) t => Proxy c -> (forall v. c v => String -> f v) -> Record f t
- Data.RBR.Internal: cpure_Record :: forall c t f. KeysValuesAll c t => Proxy c -> (forall k v. c k v => f v) -> Record f t
- Data.RBR.Internal: data BalanceAction
- Data.RBR.Internal: data Color
- Data.RBR.Internal: data Map symbol q
- Data.RBR.Internal: data Record (f :: q -> Type) (t :: Map Symbol q)
- Data.RBR.Internal: data Variant (f :: q -> Type) (t :: Map Symbol q)
- Data.RBR.Internal: del :: Delable k v t => Record f t -> Record f (Del k v t)
- Data.RBR.Internal: del' :: DelableHelper ordering k v l kx vx r => Record f (N color l kx vx r) -> Record f (Del' ordering k v l kx vx r)
- Data.RBR.Internal: delL :: DelableL k v l kx vx r => Record f (N color l kx vx r) -> Record f (DelL k v l kx vx r)
- Data.RBR.Internal: delR :: DelableR k v l kx vx r => Record f (N color l kx vx r) -> Record f (DelR k v l kx vx r)
- Data.RBR.Internal: delete :: forall k v t f. Deletable k v t => Record f t -> Record f (Delete k v t)
- Data.RBR.Internal: demoteEntries :: forall t. KeysValuesAll KnownKeyTypeableValue t => Record (K (String, TypeRep)) t
- Data.RBR.Internal: demoteKeys :: forall t. KeysValuesAll KnownKey t => Record (K String) t
- Data.RBR.Internal: eliminate :: (Productlike '[] t result, Sumlike '[] t result, SListI result) => Record (Case f r) t -> Variant f t -> r
- Data.RBR.Internal: eliminateSubset :: forall subset whole subflat wholeflat f r. SumlikeSubset subset whole subflat wholeflat => Record (Case f r) whole -> Variant f subset -> r
- Data.RBR.Internal: eliminate_Variant :: Maplike t => Record (Case f r) t -> Variant f t -> r
- Data.RBR.Internal: field :: forall k t f. Key k t => Field f t (Value k t)
- Data.RBR.Internal: field' :: KeyHelper ordering k left v right => Field f (N colorx left kx v right) (Value' ordering k left v right)
- Data.RBR.Internal: fieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f whole -> (Record f subset -> Record f whole, Record f subset)
- Data.RBR.Internal: fromNP :: forall t result f. Productlike '[] t result => NP f result -> Record f t
- Data.RBR.Internal: fromNS :: forall t result f. Sumlike '[] t result => NS f result -> Variant f t
- Data.RBR.Internal: fromRecord :: (FromRecord r, Generic r, FromRecordHelper (RecordCode r) (Rep r)) => Record I (RecordCode r) -> r
- Data.RBR.Internal: fromRecord' :: FromRecordHelper t g => Record I t -> g x
- Data.RBR.Internal: fromVariant :: (FromVariant s, Generic s, FromVariantHelper (VariantCode s) (Rep s)) => Variant I (VariantCode s) -> s
- Data.RBR.Internal: fromVariant' :: FromVariantHelper t g => Variant I t -> Maybe (g x)
- Data.RBR.Internal: fuseRecord :: Fuseable l r => Record f l -> Record f r -> Record f (Fuse l r)
- Data.RBR.Internal: fuseRecord1 :: FuseableHelper1 fused l r => Record f l -> Record f r -> Record f (Fuse l r)
- Data.RBR.Internal: fuseRecord2 :: FuseableHelper2 fused l r => Record f l -> Record f r -> Record f (Fuse l r)
- Data.RBR.Internal: fuseVariant :: Fuseable l r => Either (Variant f l) (Variant f r) -> Variant f (Fuse l r)
- Data.RBR.Internal: fuseVariant1 :: FuseableHelper1 fused l r => Either (Variant f l) (Variant f r) -> Variant f (Fuse l r)
- Data.RBR.Internal: fuseVariant2 :: FuseableHelper2 fused l r => Either (Variant f l) (Variant f r) -> Variant f (Fuse l r)
- Data.RBR.Internal: getField :: forall k t f. Key k t => Record f t -> f (Value k t)
- Data.RBR.Internal: getFieldI :: forall k t. Key k t => Record I t -> Value k t
- Data.RBR.Internal: getFieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f whole -> Record f subset
- Data.RBR.Internal: impossible :: Variant f Empty -> b
- Data.RBR.Internal: inject :: forall k t f. Key k t => f (Value k t) -> Variant f t
- Data.RBR.Internal: injectI :: forall k t. Key k t => Value k t -> Variant I t
- Data.RBR.Internal: injectSubset :: forall subset whole subflat wholeflat f. SumlikeSubset subset whole subflat wholeflat => Variant f subset -> Variant f whole
- Data.RBR.Internal: injections'_Variant :: Maplike t => Record (Case f (Variant f t)) t
- Data.RBR.Internal: injections_Record :: Maplike t => Record (Case f (Endo (Record f t))) t
- Data.RBR.Internal: injections_Variant :: Maplike t => Record (VariantInjection f t) t
- Data.RBR.Internal: insert :: forall k v t f. Insertable k v t => f v -> Record f t -> Record f (Insert k v t)
- Data.RBR.Internal: insert1 :: InsertableHelper1 k v t => f v -> Record f t -> Record f (Insert1 k v t)
- Data.RBR.Internal: insert2 :: InsertableHelper2 ordering k v color left k' v' right => f v -> Record f (N color left k' v' right) -> Record f (Insert2 ordering k v color left k' v' right)
- Data.RBR.Internal: insertI :: forall k v t. Insertable k v t => v -> Record I t -> Record I (Insert k v t)
- Data.RBR.Internal: instance (Data.RBR.Internal.FromRecordHelper t t1, Data.RBR.Internal.FromRecordHelper t t2) => Data.RBR.Internal.FromRecordHelper t (t1 GHC.Generics.:*: t2)
- Data.RBR.Internal: instance (Data.RBR.Internal.FromVariantHelper t t1, Data.RBR.Internal.FromVariantHelper t t2) => Data.RBR.Internal.FromVariantHelper t (t1 GHC.Generics.:+: t2)
- Data.RBR.Internal: instance (Data.RBR.Internal.Key k t, Data.RBR.Internal.Value k t Data.Type.Equality.~ ()) => Data.RBR.Internal.FromVariantHelper t (GHC.Generics.C1 ('GHC.Generics.MetaCons k x y) GHC.Generics.U1)
- Data.RBR.Internal: instance (Data.RBR.Internal.Key k t, Data.RBR.Internal.Value k t Data.Type.Equality.~ ()) => Data.RBR.Internal.ToVariantHelper t (GHC.Generics.C1 ('GHC.Generics.MetaCons k x y) GHC.Generics.U1)
- Data.RBR.Internal: instance (Data.RBR.Internal.Key k t, Data.RBR.Internal.Value k t Data.Type.Equality.~ v) => Data.RBR.Internal.FromRecordHelper t (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just k) unpackedness strictness laziness) (GHC.Generics.Rec0 v))
- Data.RBR.Internal: instance (Data.RBR.Internal.Key k t, Data.RBR.Internal.Value k t Data.Type.Equality.~ v) => Data.RBR.Internal.FromVariantHelper t (GHC.Generics.C1 ('GHC.Generics.MetaCons k x y) (GHC.Generics.S1 ('GHC.Generics.MetaSel 'GHC.Maybe.Nothing unpackedness strictness laziness) (GHC.Generics.Rec0 v)))
- Data.RBR.Internal: instance (Data.RBR.Internal.Key k t, Data.RBR.Internal.Value k t Data.Type.Equality.~ v) => Data.RBR.Internal.ToVariantHelper t (GHC.Generics.C1 ('GHC.Generics.MetaCons k x y) (GHC.Generics.S1 ('GHC.Generics.MetaSel 'GHC.Maybe.Nothing unpackedness strictness laziness) (GHC.Generics.Rec0 v)))
- Data.RBR.Internal: instance (Data.RBR.Internal.Maplike left, Data.RBR.Internal.Maplike right) => Data.RBR.Internal.Maplike ('Data.RBR.Internal.N color left k v right)
- Data.RBR.Internal: instance (Data.RBR.Internal.ToRecordHelper start t2, Data.RBR.Internal.RecordCode' start t2 Data.Type.Equality.~ middle, Data.RBR.Internal.ToRecordHelper middle t1) => Data.RBR.Internal.ToRecordHelper start (t1 GHC.Generics.:*: t2)
- Data.RBR.Internal: instance (Data.RBR.Internal.ToVariantHelper t t1, Data.RBR.Internal.ToVariantHelper t t2) => Data.RBR.Internal.ToVariantHelper t (t1 GHC.Generics.:+: t2)
- Data.RBR.Internal: instance (GHC.Classes.Eq symbol, GHC.Classes.Eq q) => GHC.Classes.Eq (Data.RBR.Internal.Map symbol q)
- Data.RBR.Internal: instance (GHC.Show.Show symbol, GHC.Show.Show q) => GHC.Show.Show (Data.RBR.Internal.Map symbol q)
- Data.RBR.Internal: instance Data.RBR.Internal.CanMakeBlack 'Data.RBR.Internal.E
- Data.RBR.Internal: instance Data.RBR.Internal.FromRecord (Data.RBR.Internal.Record Data.SOP.BasicFunctors.I t)
- Data.RBR.Internal: instance Data.RBR.Internal.FromRecordHelper t fields => Data.RBR.Internal.FromRecordHelper t (GHC.Generics.D1 meta (GHC.Generics.C1 metacons fields))
- Data.RBR.Internal: instance Data.RBR.Internal.FromVariantHelper t fields => Data.RBR.Internal.FromVariantHelper t (GHC.Generics.D1 meta fields)
- Data.RBR.Internal: instance Data.RBR.Internal.Fuseable 'Data.RBR.Internal.E 'Data.RBR.Internal.E
- Data.RBR.Internal: instance Data.RBR.Internal.Insertable k v start => Data.RBR.Internal.ToRecordHelper start (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just k) unpackedness strictness laziness) (GHC.Generics.Rec0 v))
- Data.RBR.Internal: instance Data.RBR.Internal.Maplike 'Data.RBR.Internal.E
- Data.RBR.Internal: instance Data.RBR.Internal.ToRecord (Data.RBR.Internal.Record Data.SOP.BasicFunctors.I t)
- Data.RBR.Internal: instance Data.RBR.Internal.ToRecordHelper 'Data.RBR.Internal.E fields => Data.RBR.Internal.ToRecordHelper 'Data.RBR.Internal.E (GHC.Generics.D1 meta (GHC.Generics.C1 metacons fields))
- Data.RBR.Internal: instance Data.RBR.Internal.ToVariantHelper t fields => Data.RBR.Internal.ToVariantHelper t (GHC.Generics.D1 meta fields)
- Data.RBR.Internal: instance GHC.Base.Functor f => Data.Functor.Contravariant.Contravariant (Data.RBR.Internal.Case f a)
- Data.RBR.Internal: instance GHC.Classes.Eq Data.RBR.Internal.Color
- Data.RBR.Internal: instance GHC.Show.Show Data.RBR.Internal.BalanceAction
- Data.RBR.Internal: instance GHC.Show.Show Data.RBR.Internal.Color
- Data.RBR.Internal: instance forall a (start :: [a]) (color :: Data.RBR.Internal.Color) (k :: GHC.Types.Symbol) (v :: a). Data.RBR.Internal.Sumlike start ('Data.RBR.Internal.N color 'Data.RBR.Internal.E k v 'Data.RBR.Internal.E) (v : start)
- Data.RBR.Internal: instance forall a (start :: [a]) (colorR :: Data.RBR.Internal.Color) (leftR :: Data.RBR.Internal.Map GHC.Types.Symbol a) (kR :: GHC.Types.Symbol) (vR :: a) (rightR :: Data.RBR.Internal.Map GHC.Types.Symbol a) (middle :: [a]) (color :: Data.RBR.Internal.Color) (k :: GHC.Types.Symbol) (v :: a). Data.RBR.Internal.Sumlike start ('Data.RBR.Internal.N colorR leftR kR vR rightR) middle => Data.RBR.Internal.Sumlike start ('Data.RBR.Internal.N color 'Data.RBR.Internal.E k v ('Data.RBR.Internal.N colorR leftR kR vR rightR)) (v : middle)
- Data.RBR.Internal: instance forall k (start :: [k]). Data.RBR.Internal.Productlike start 'Data.RBR.Internal.E start
- Data.RBR.Internal: instance forall k1 (color :: Data.RBR.Internal.Color) (left :: Data.RBR.Internal.Map GHC.Types.Symbol k1) (k2 :: GHC.Types.Symbol) (v :: k1) (right :: Data.RBR.Internal.Map GHC.Types.Symbol k1). Data.RBR.Internal.CanMakeBlack ('Data.RBR.Internal.N color left k2 v right)
- Data.RBR.Internal: instance forall q (a :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k :: GHC.Types.Symbol) (v :: q) (b :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelper 'Data.RBR.Internal.DoNotBalance a k v b
- Data.RBR.Internal: instance forall q (a :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (b :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (c :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k3 :: GHC.Types.Symbol) (v3 :: q) (d :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelper 'Data.RBR.Internal.BalanceLL ('Data.RBR.Internal.N 'Data.RBR.Internal.R ('Data.RBR.Internal.N 'Data.RBR.Internal.R a k1 v1 b) k2 v2 c) k3 v3 d
- Data.RBR.Internal: instance forall q (a :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (b :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (c :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k3 :: GHC.Types.Symbol) (v3 :: q) (d :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelper 'Data.RBR.Internal.BalanceLR ('Data.RBR.Internal.N 'Data.RBR.Internal.R a k1 v1 ('Data.RBR.Internal.N 'Data.RBR.Internal.R b k2 v2 c)) k3 v3 d
- Data.RBR.Internal: instance forall q (a :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (b :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (c :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k3 :: GHC.Types.Symbol) (v3 :: q) (d :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelper 'Data.RBR.Internal.BalanceRL a k1 v1 ('Data.RBR.Internal.N 'Data.RBR.Internal.R ('Data.RBR.Internal.N 'Data.RBR.Internal.R b k2 v2 c) k3 v3 d)
- Data.RBR.Internal: instance forall q (a :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (b :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (c :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k3 :: GHC.Types.Symbol) (v3 :: q) (d :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelper 'Data.RBR.Internal.BalanceRR a k1 v1 ('Data.RBR.Internal.N 'Data.RBR.Internal.R b k2 v2 ('Data.RBR.Internal.N 'Data.RBR.Internal.R c k3 v3 d))
- Data.RBR.Internal: instance forall q (color :: Data.RBR.Internal.Color) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k :: GHC.Types.Symbol) (v :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.Fuseable 'Data.RBR.Internal.E ('Data.RBR.Internal.N color left k v right)
- Data.RBR.Internal: instance forall q (color :: Data.RBR.Internal.Color) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k :: GHC.Types.Symbol) (v :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.Fuseable ('Data.RBR.Internal.N color left k v right) 'Data.RBR.Internal.E
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (k' :: GHC.Types.Symbol) (ordering :: GHC.Types.Ordering) (v :: q) (color :: Data.RBR.Internal.Color) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (v' :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). (GHC.TypeLits.CmpSymbol k k' Data.Type.Equality.~ ordering, Data.RBR.Internal.InsertableHelper2 ordering k v color left k' v' right) => Data.RBR.Internal.InsertableHelper1 k v ('Data.RBR.Internal.N color left k' v' right)
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (v :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.KeyHelper 'GHC.Types.EQ k left v right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (t :: Data.RBR.Internal.Map GHC.Types.Symbol q) (v :: q). (Data.RBR.Internal.Key k t, Data.RBR.Internal.Value k t Data.Type.Equality.~ v) => Data.RBR.Internal.PresentIn t k v
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (color :: Data.RBR.Internal.Color) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.InsertableHelper2 'GHC.Types.EQ k v color left k v right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (kx :: GHC.Types.Symbol) (vx :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.DelableL k v 'Data.RBR.Internal.E kx vx right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (inserted :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k' :: GHC.Types.Symbol) (v' :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.InsertableHelper1 k v left, Data.RBR.Internal.Insert1 k v left Data.Type.Equality.~ inserted, Data.RBR.Internal.Balanceable inserted k' v' right) => Data.RBR.Internal.InsertableHelper2 'GHC.Types.LT k v 'Data.RBR.Internal.B left k' v' right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (inserted :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k' :: GHC.Types.Symbol) (v' :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.InsertableHelper1 k v left, Data.RBR.Internal.Insert1 k v left Data.Type.Equality.~ inserted, Data.RBR.Internal.Balanceable inserted k' v' right) => Data.RBR.Internal.InsertableHelper2 'GHC.Types.LT k v 'Data.RBR.Internal.R left k' v' right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.DelableL k v left kx vx right => Data.RBR.Internal.DelableHelper 'GHC.Types.GT k v left kx vx right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.DelableR k v left kx vx right => Data.RBR.Internal.DelableHelper 'GHC.Types.LT k v left kx vx right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q). Data.RBR.Internal.DelableR k v left kx vx 'Data.RBR.Internal.E
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (leftz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kz :: GHC.Types.Symbol) (vz :: q) (rightz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.Delable k v ('Data.RBR.Internal.N 'Data.RBR.Internal.R leftz kz vz rightz) => Data.RBR.Internal.DelableL k v ('Data.RBR.Internal.N 'Data.RBR.Internal.R leftz kz vz rightz) kx vx right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (leftz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kz :: GHC.Types.Symbol) (vz :: q) (rightz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q). Data.RBR.Internal.Delable k v ('Data.RBR.Internal.N 'Data.RBR.Internal.R leftz kz vz rightz) => Data.RBR.Internal.DelableR k v left kx vx ('Data.RBR.Internal.N 'Data.RBR.Internal.R leftz kz vz rightz)
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q) (inserted :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k' :: GHC.Types.Symbol) (v' :: q). (Data.RBR.Internal.InsertableHelper1 k v right, Data.RBR.Internal.Insert1 k v right Data.Type.Equality.~ inserted, Data.RBR.Internal.Balanceable left k' v' inserted) => Data.RBR.Internal.InsertableHelper2 'GHC.Types.GT k v 'Data.RBR.Internal.B left k' v' right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q) (inserted :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k' :: GHC.Types.Symbol) (v' :: q). (Data.RBR.Internal.InsertableHelper1 k v right, Data.RBR.Internal.Insert1 k v right Data.Type.Equality.~ inserted, Data.RBR.Internal.Balanceable left k' v' inserted) => Data.RBR.Internal.InsertableHelper2 'GHC.Types.GT k v 'Data.RBR.Internal.R left k' v' right
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (t :: Data.RBR.Internal.Map GHC.Types.Symbol q) (deleted :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.Delable k v t, Data.RBR.Internal.Del k v t Data.Type.Equality.~ deleted, Data.RBR.Internal.CanMakeBlack deleted) => Data.RBR.Internal.Deletable k v t
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q) (t :: Data.RBR.Internal.Map GHC.Types.Symbol q) (inserted :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.InsertableHelper1 k v t, Data.RBR.Internal.Insert1 k v t Data.Type.Equality.~ inserted, Data.RBR.Internal.CanMakeBlack inserted) => Data.RBR.Internal.Insertable k v t
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q). (GHC.TypeLits.KnownSymbol k, Data.Typeable.Internal.Typeable v) => Data.RBR.Internal.KnownKeyTypeableValue k v
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q). Data.RBR.Internal.Delable k v 'Data.RBR.Internal.E
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q). Data.RBR.Internal.InsertableHelper1 k v 'Data.RBR.Internal.E
- Data.RBR.Internal: instance forall q (k :: GHC.Types.Symbol) (v :: q). GHC.TypeLits.KnownSymbol k => Data.RBR.Internal.KnownKey k v
- Data.RBR.Internal: instance forall q (k' :: GHC.Types.Symbol) (k :: GHC.Types.Symbol) (ordering :: GHC.Types.Ordering) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (v' :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q) (color :: Data.RBR.Internal.Color). (GHC.TypeLits.CmpSymbol k' k Data.Type.Equality.~ ordering, Data.RBR.Internal.KeyHelper ordering k left v' right) => Data.RBR.Internal.Key k ('Data.RBR.Internal.N color left k' v' right)
- Data.RBR.Internal: instance forall q (k2 :: GHC.Types.Symbol) (k :: GHC.Types.Symbol) (ordering :: GHC.Types.Ordering) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (color2 :: Data.RBR.Internal.Color) (v' :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). (GHC.TypeLits.CmpSymbol k2 k Data.Type.Equality.~ ordering, Data.RBR.Internal.KeyHelper ordering k left2 v2 right2) => Data.RBR.Internal.KeyHelper 'GHC.Types.GT k ('Data.RBR.Internal.N color2 left2 k2 v2 right2) v' right
- Data.RBR.Internal: instance forall q (k2 :: GHC.Types.Symbol) (k :: GHC.Types.Symbol) (ordering :: GHC.Types.Ordering) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (v :: q) (color2 :: Data.RBR.Internal.Color). (GHC.TypeLits.CmpSymbol k2 k Data.Type.Equality.~ ordering, Data.RBR.Internal.KeyHelper ordering k left2 v2 right2) => Data.RBR.Internal.KeyHelper 'GHC.Types.LT k left v ('Data.RBR.Internal.N color2 left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (kc :: GHC.Types.Symbol -> GHC.Types.Constraint) (k :: GHC.Types.Symbol) (vc :: q -> GHC.Types.Constraint) (v :: q). (kc k, vc v) => Data.RBR.Internal.KeyValueConstraints kc vc k v
- Data.RBR.Internal: instance forall q (kx :: GHC.Types.Symbol) (k :: GHC.Types.Symbol) (ordering :: GHC.Types.Ordering) (v :: q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (vx :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q) (color :: Data.RBR.Internal.Color). (GHC.TypeLits.CmpSymbol kx k Data.Type.Equality.~ ordering, Data.RBR.Internal.DelableHelper ordering k v left kx vx right) => Data.RBR.Internal.Delable k v ('Data.RBR.Internal.N color left kx vx right)
- Data.RBR.Internal: instance forall q (l :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k :: GHC.Types.Symbol) (kv :: q) (r :: Data.RBR.Internal.Map GHC.Types.Symbol q) (g :: Data.RBR.Internal.Map GHC.Types.Symbol q) (t3 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (z :: GHC.Types.Symbol) (zv :: q) (t1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (y :: GHC.Types.Symbol) (yv :: q) (t2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (u :: GHC.Types.Symbol) (uv :: q). ('Data.RBR.Internal.N 'Data.RBR.Internal.R l k kv r Data.Type.Equality.~ g, Data.RBR.Internal.BalanceableHelper (Data.RBR.Internal.ShouldBalance t3 g) t3 z zv g) => Data.RBR.Internal.BalanceableHelperL 'GHC.Types.True t1 y yv ('Data.RBR.Internal.N 'Data.RBR.Internal.R ('Data.RBR.Internal.N 'Data.RBR.Internal.B t2 u uv t3) z zv ('Data.RBR.Internal.N 'Data.RBR.Internal.B l k kv r))
- Data.RBR.Internal: instance forall q (l :: Data.RBR.Internal.Map GHC.Types.Symbol q) (r :: Data.RBR.Internal.Map GHC.Types.Symbol q) (b :: GHC.Types.Bool) (k :: GHC.Types.Symbol) (v :: q). (Data.RBR.Internal.DiscriminateBalL l r Data.Type.Equality.~ b, Data.RBR.Internal.BalanceableHelperL b l k v r) => Data.RBR.Internal.BalanceableL l k v r
- Data.RBR.Internal: instance forall q (l :: Data.RBR.Internal.Map GHC.Types.Symbol q) (r :: Data.RBR.Internal.Map GHC.Types.Symbol q) (b :: GHC.Types.Bool) (k :: GHC.Types.Symbol) (v :: q). (Data.RBR.Internal.DiscriminateBalR l r Data.Type.Equality.~ b, Data.RBR.Internal.BalanceableHelperR b l k v r) => Data.RBR.Internal.BalanceableR l k v r
- Data.RBR.Internal: instance forall q (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q) (action :: Data.RBR.Internal.BalanceAction) (k :: GHC.Types.Symbol) (v :: q). (Data.RBR.Internal.ShouldBalance left right Data.Type.Equality.~ action, Data.RBR.Internal.BalanceableHelper action left k v right) => Data.RBR.Internal.Balanceable left k v right
- Data.RBR.Internal: instance forall q (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k :: GHC.Types.Symbol) (v :: q). Data.RBR.Internal.Fuseable left right => Data.RBR.Internal.DelableHelper 'GHC.Types.EQ k v left k v right
- Data.RBR.Internal: instance forall q (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableL left1 k1 v1 ('Data.RBR.Internal.N 'Data.RBR.Internal.B 'Data.RBR.Internal.E k2 v2 right2) => Data.RBR.Internal.FuseableHelper2 'Data.RBR.Internal.E ('Data.RBR.Internal.N 'Data.RBR.Internal.B left1 k1 v1 'Data.RBR.Internal.E) ('Data.RBR.Internal.N 'Data.RBR.Internal.B 'Data.RBR.Internal.E k2 v2 right2)
- Data.RBR.Internal: instance forall q (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.FuseableHelper1 'Data.RBR.Internal.E ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 'Data.RBR.Internal.E) ('Data.RBR.Internal.N 'Data.RBR.Internal.R 'Data.RBR.Internal.E k2 v2 right2)
- Data.RBR.Internal: instance forall q (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelperL 'GHC.Types.False ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1) k2 v2 right2
- Data.RBR.Internal: instance forall q (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelper 'Data.RBR.Internal.BalanceSpecial ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1) kx vx ('Data.RBR.Internal.N 'Data.RBR.Internal.R left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.Fuseable ('Data.RBR.Internal.N 'Data.RBR.Internal.B left1 k1 v1 right1) left2 => Data.RBR.Internal.Fuseable ('Data.RBR.Internal.N 'Data.RBR.Internal.B left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.R left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (leftz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kz :: GHC.Types.Symbol) (vz :: q) (rightz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (g :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k :: GHC.Types.Symbol) (v :: q) (deleted :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q). ('Data.RBR.Internal.N 'Data.RBR.Internal.B leftz kz vz rightz Data.Type.Equality.~ g, Data.RBR.Internal.Delable k v g, Data.RBR.Internal.Del k v g Data.Type.Equality.~ deleted, Data.RBR.Internal.BalanceableL deleted kx vx right) => Data.RBR.Internal.DelableL k v ('Data.RBR.Internal.N 'Data.RBR.Internal.B leftz kz vz rightz) kx vx right
- Data.RBR.Internal: instance forall q (leftz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kz :: GHC.Types.Symbol) (vz :: q) (rightz :: Data.RBR.Internal.Map GHC.Types.Symbol q) (g :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k :: GHC.Types.Symbol) (v :: q) (deleted :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kx :: GHC.Types.Symbol) (vx :: q). ('Data.RBR.Internal.N 'Data.RBR.Internal.B leftz kz vz rightz Data.Type.Equality.~ g, Data.RBR.Internal.Delable k v g, Data.RBR.Internal.Del k v g Data.Type.Equality.~ deleted, Data.RBR.Internal.BalanceableR left kx vx deleted) => Data.RBR.Internal.DelableR k v left kx vx ('Data.RBR.Internal.N 'Data.RBR.Internal.B leftz kz vz rightz)
- Data.RBR.Internal: instance forall q (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (fused :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.Fuseable right1 left2, Data.RBR.Internal.Fuse right1 left2 Data.Type.Equality.~ fused, Data.RBR.Internal.FuseableHelper1 fused ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.R left2 k2 v2 right2)) => Data.RBR.Internal.Fuseable ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.R left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (fused :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.Fuseable right1 left2, Data.RBR.Internal.Fuse right1 left2 Data.Type.Equality.~ fused, Data.RBR.Internal.FuseableHelper2 fused ('Data.RBR.Internal.N 'Data.RBR.Internal.B left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.B left2 k2 v2 right2)) => Data.RBR.Internal.Fuseable ('Data.RBR.Internal.N 'Data.RBR.Internal.B left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.B left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q). Data.RBR.Internal.Fuseable right1 ('Data.RBR.Internal.N 'Data.RBR.Internal.B left2 k2 v2 right2) => Data.RBR.Internal.Fuseable ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.B left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (s1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (z :: GHC.Types.Symbol) (zv :: q) (s2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.Fuseable right1 left2, Data.RBR.Internal.Fuse right1 left2 Data.Type.Equality.~ 'Data.RBR.Internal.N 'Data.RBR.Internal.B s1 z zv s2) => Data.RBR.Internal.FuseableHelper1 ('Data.RBR.Internal.N 'Data.RBR.Internal.B s1 z zv s2) ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.R left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (s1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (z :: GHC.Types.Symbol) (zv :: q) (s2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.Fuseable right1 left2, Data.RBR.Internal.Fuse right1 left2 Data.Type.Equality.~ 'Data.RBR.Internal.N 'Data.RBR.Internal.B s1 z zv s2, Data.RBR.Internal.BalanceableL left1 k1 v1 ('Data.RBR.Internal.N 'Data.RBR.Internal.B ('Data.RBR.Internal.N 'Data.RBR.Internal.B s1 z zv s2) k2 v2 right2)) => Data.RBR.Internal.FuseableHelper2 ('Data.RBR.Internal.N 'Data.RBR.Internal.B s1 z zv s2) ('Data.RBR.Internal.N 'Data.RBR.Internal.B left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.B left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (s1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (z :: GHC.Types.Symbol) (zv :: q) (s2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.Fuseable right1 left2, Data.RBR.Internal.Fuse right1 left2 Data.Type.Equality.~ 'Data.RBR.Internal.N 'Data.RBR.Internal.R s1 z zv s2) => Data.RBR.Internal.FuseableHelper1 ('Data.RBR.Internal.N 'Data.RBR.Internal.R s1 z zv s2) ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.R left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (s1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (z :: GHC.Types.Symbol) (zv :: q) (s2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (k2 :: GHC.Types.Symbol) (v2 :: q) (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q). (Data.RBR.Internal.Fuseable right1 left2, Data.RBR.Internal.Fuse right1 left2 Data.Type.Equality.~ 'Data.RBR.Internal.N 'Data.RBR.Internal.R s1 z zv s2) => Data.RBR.Internal.FuseableHelper2 ('Data.RBR.Internal.N 'Data.RBR.Internal.R s1 z zv s2) ('Data.RBR.Internal.N 'Data.RBR.Internal.B left1 k1 v1 right1) ('Data.RBR.Internal.N 'Data.RBR.Internal.B left2 k2 v2 right2)
- Data.RBR.Internal: instance forall q (right2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k2 :: GHC.Types.Symbol) (v2 :: q) (left1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (k1 :: GHC.Types.Symbol) (v1 :: q) (right1 :: Data.RBR.Internal.Map GHC.Types.Symbol q). Data.RBR.Internal.BalanceableHelperR 'GHC.Types.False right2 k2 v2 ('Data.RBR.Internal.N 'Data.RBR.Internal.R left1 k1 v1 right1)
- Data.RBR.Internal: instance forall q (start :: [q]) (colorR :: Data.RBR.Internal.Color) (leftR :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kR :: GHC.Types.Symbol) (vR :: q) (rightR :: Data.RBR.Internal.Map GHC.Types.Symbol q) (middle :: [q]) (v :: q) (colorL :: Data.RBR.Internal.Color) (leftL :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kL :: GHC.Types.Symbol) (vL :: q) (rightL :: Data.RBR.Internal.Map GHC.Types.Symbol q) (result :: [q]) (color :: Data.RBR.Internal.Color) (k :: GHC.Types.Symbol). (Data.RBR.Internal.Sumlike start ('Data.RBR.Internal.N colorR leftR kR vR rightR) middle, Data.RBR.Internal.Sumlike (v : middle) ('Data.RBR.Internal.N colorL leftL kL vL rightL) result) => Data.RBR.Internal.Sumlike start ('Data.RBR.Internal.N color ('Data.RBR.Internal.N colorL leftL kL vL rightL) k v ('Data.RBR.Internal.N colorR leftR kR vR rightR)) result
- Data.RBR.Internal: instance forall q (start :: [q]) (right :: Data.RBR.Internal.Map GHC.Types.Symbol q) (middle :: [q]) (v :: q) (left :: Data.RBR.Internal.Map GHC.Types.Symbol q) (result :: [q]) (color :: Data.RBR.Internal.Color) (k :: GHC.Types.Symbol). (Data.RBR.Internal.Productlike start right middle, Data.RBR.Internal.Productlike (v : middle) left result) => Data.RBR.Internal.Productlike start ('Data.RBR.Internal.N color left k v right) result
- Data.RBR.Internal: instance forall q (t :: Data.RBR.Internal.Map GHC.Types.Symbol q) (result :: [q]) (f :: q -> *). (Data.RBR.Internal.Productlike '[] t result, GHC.Show.Show (Data.SOP.NP.NP f result)) => GHC.Show.Show (Data.RBR.Internal.Record f t)
- Data.RBR.Internal: instance forall q (t :: Data.RBR.Internal.Map GHC.Types.Symbol q) (result :: [q]) (f :: q -> *). (Data.RBR.Internal.Sumlike '[] t result, GHC.Show.Show (Data.SOP.NS.NS f result)) => GHC.Show.Show (Data.RBR.Internal.Variant f t)
- Data.RBR.Internal: instance forall q (t2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (u :: GHC.Types.Symbol) (uv :: q) (t3 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (g :: Data.RBR.Internal.Map GHC.Types.Symbol q) (l :: Data.RBR.Internal.Map GHC.Types.Symbol q) (shouldbalance :: Data.RBR.Internal.BalanceAction) (z :: GHC.Types.Symbol) (zv :: q) (k :: GHC.Types.Symbol) (kv :: q) (r :: Data.RBR.Internal.Map GHC.Types.Symbol q) (y :: GHC.Types.Symbol) (yv :: q) (t1 :: Data.RBR.Internal.Map GHC.Types.Symbol q). ('Data.RBR.Internal.N 'Data.RBR.Internal.R t2 u uv t3 Data.Type.Equality.~ g, Data.RBR.Internal.ShouldBalance g l Data.Type.Equality.~ shouldbalance, Data.RBR.Internal.BalanceableHelper shouldbalance g z zv l) => Data.RBR.Internal.BalanceableHelperR 'GHC.Types.True ('Data.RBR.Internal.N 'Data.RBR.Internal.R ('Data.RBR.Internal.N 'Data.RBR.Internal.B t2 u uv t3) z zv ('Data.RBR.Internal.N 'Data.RBR.Internal.B l k kv r)) y yv t1
- Data.RBR.Internal: instance forall q (t2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (z :: GHC.Types.Symbol) (zv :: q) (t3 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (g :: Data.RBR.Internal.Map GHC.Types.Symbol q) (t1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (shouldbalance :: Data.RBR.Internal.BalanceAction) (y :: GHC.Types.Symbol) (yv :: q). ('Data.RBR.Internal.N 'Data.RBR.Internal.R t2 z zv t3 Data.Type.Equality.~ g, Data.RBR.Internal.ShouldBalance g t1 Data.Type.Equality.~ shouldbalance, Data.RBR.Internal.BalanceableHelper shouldbalance g y yv t1) => Data.RBR.Internal.BalanceableHelperR 'GHC.Types.True ('Data.RBR.Internal.N 'Data.RBR.Internal.B t2 z zv t3) y yv t1
- Data.RBR.Internal: instance forall q (t2 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (z :: GHC.Types.Symbol) (zv :: q) (t3 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (g :: Data.RBR.Internal.Map GHC.Types.Symbol q) (t1 :: Data.RBR.Internal.Map GHC.Types.Symbol q) (y :: GHC.Types.Symbol) (yv :: q). ('Data.RBR.Internal.N 'Data.RBR.Internal.R t2 z zv t3 Data.Type.Equality.~ g, Data.RBR.Internal.BalanceableHelper (Data.RBR.Internal.ShouldBalance t1 g) t1 y yv g) => Data.RBR.Internal.BalanceableHelperL 'GHC.Types.True t1 y yv ('Data.RBR.Internal.N 'Data.RBR.Internal.B t2 z zv t3)
- Data.RBR.Internal: instance forall q (v :: q) (start :: [q]) (colorL :: Data.RBR.Internal.Color) (leftL :: Data.RBR.Internal.Map GHC.Types.Symbol q) (kL :: GHC.Types.Symbol) (vL :: q) (rightL :: Data.RBR.Internal.Map GHC.Types.Symbol q) (result :: [q]) (color :: Data.RBR.Internal.Color) (k :: GHC.Types.Symbol). Data.RBR.Internal.Sumlike (v : start) ('Data.RBR.Internal.N colorL leftL kL vL rightL) result => Data.RBR.Internal.Sumlike start ('Data.RBR.Internal.N color ('Data.RBR.Internal.N colorL leftL kL vL rightL) k v 'Data.RBR.Internal.E) result
- Data.RBR.Internal: instance forall q (vc :: q -> GHC.Types.Constraint) (v :: q) (k :: GHC.Types.Symbol). vc v => Data.RBR.Internal.ValueConstraint vc k v
- Data.RBR.Internal: instance forall symbol q (c :: symbol -> q -> GHC.Types.Constraint) (k :: symbol) (v :: q) (left :: Data.RBR.Internal.Map symbol q) (right :: Data.RBR.Internal.Map symbol q) (color :: Data.RBR.Internal.Color). (c k v, Data.RBR.Internal.KeysValuesAll c left, Data.RBR.Internal.KeysValuesAll c right) => Data.RBR.Internal.KeysValuesAll c ('Data.RBR.Internal.N color left k v right)
- Data.RBR.Internal: instance forall symbol q (c :: symbol -> q -> GHC.Types.Constraint). Data.RBR.Internal.KeysValuesAll c 'Data.RBR.Internal.E
- Data.RBR.Internal: liftA2_Record :: Maplike t => (forall a. f a -> g a -> h a) -> Record f t -> Record g t -> Record h t
- Data.RBR.Internal: liftA2_Variant :: Maplike t => (forall a. f a -> g a -> h a) -> Record f t -> Variant g t -> Variant h t
- Data.RBR.Internal: liftA_Record :: Maplike t => (forall a. f a -> g a) -> Record f t -> Record g t
- Data.RBR.Internal: liftA_Variant :: Maplike t => (forall a. f a -> g a) -> Variant f t -> Variant g t
- Data.RBR.Internal: makeBlackR :: CanMakeBlack t => Record f t -> Record f (MakeBlack t)
- Data.RBR.Internal: makeBlackV :: CanMakeBlack t => Variant f t -> Variant f (MakeBlack t)
- Data.RBR.Internal: match :: forall k t f. Key k t => Variant f t -> Maybe (f (Value k t))
- Data.RBR.Internal: matchI :: forall k t. Key k t => Variant I t -> Maybe (Value k t)
- Data.RBR.Internal: matchSubset :: forall subset whole subflat wholeflat f. SumlikeSubset subset whole subflat wholeflat => Variant f whole -> Maybe (Variant f subset)
- Data.RBR.Internal: modifyField :: forall k t f. Key k t => (f (Value k t) -> f (Value k t)) -> Record f t -> Record f t
- Data.RBR.Internal: modifyFieldI :: forall k t. Key k t => (Value k t -> Value k t) -> Record I t -> Record I t
- Data.RBR.Internal: modifyFieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => (Record f subset -> Record f subset) -> Record f whole -> Record f whole
- Data.RBR.Internal: newtype Case f a b
- Data.RBR.Internal: newtype SetField f a b
- Data.RBR.Internal: newtype VariantInjection (f :: q -> Type) (t :: Map Symbol q) (v :: q)
- Data.RBR.Internal: prefixNP :: forall start t result f. Productlike start t result => Record f t -> NP f start -> NP f result
- Data.RBR.Internal: prefixNS :: forall start t result f. Sumlike start t result => Either (NS f start) (Variant f t) -> NS f result
- Data.RBR.Internal: prettyShowRecord :: forall t flat f. (KeysValuesAll KnownKey t, Productlike '[] t flat, All Show flat, SListI flat) => (forall x. Show x => f x -> String) -> Record f t -> String
- Data.RBR.Internal: prettyShowRecordI :: forall t flat. (KeysValuesAll KnownKey t, Productlike '[] t flat, All Show flat, SListI flat) => Record I t -> String
- Data.RBR.Internal: prettyShowVariant :: forall t flat f. (KeysValuesAll KnownKey t, Productlike '[] t flat, Sumlike '[] t flat, All Show flat, SListI flat) => (forall x. Show x => f x -> String) -> Variant f t -> String
- Data.RBR.Internal: prettyShowVariantI :: forall t flat. (KeysValuesAll KnownKey t, Productlike '[] t flat, Sumlike '[] t flat, All Show flat, SListI flat) => Variant I t -> String
- Data.RBR.Internal: prettyShow_Record :: forall t f. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => (forall x. Show x => f x -> String) -> Record f t -> String
- Data.RBR.Internal: prettyShow_RecordI :: forall t. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => Record I t -> String
- Data.RBR.Internal: prettyShow_Variant :: forall t flat f. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => (forall x. Show x => f x -> String) -> Variant f t -> String
- Data.RBR.Internal: prettyShow_VariantI :: forall t flat. (Maplike t, KeysValuesAll (KeyValueConstraints KnownSymbol Show) t) => Variant I t -> String
- Data.RBR.Internal: project :: forall k t f. Key k t => Record f t -> f (Value k t)
- Data.RBR.Internal: projectI :: forall k t. Key k t => Record I t -> Value k t
- Data.RBR.Internal: projectSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f whole -> Record f subset
- Data.RBR.Internal: pure_Record :: Maplike t => (forall v. f v) -> Record f t
- Data.RBR.Internal: sequence'_Record :: (Maplike t, Applicative f) => Record (f :.: g) t -> f (Record g t)
- Data.RBR.Internal: sequence_Record :: (Maplike t, Applicative f) => Record f t -> f (Record I t)
- Data.RBR.Internal: setField :: forall k t f. Key k t => f (Value k t) -> Record f t -> Record f t
- Data.RBR.Internal: setFieldI :: forall k t. Key k t => Value k t -> Record I t -> Record I t
- Data.RBR.Internal: setFieldSubset :: forall subset whole flat f. ProductlikeSubset subset whole flat => Record f subset -> Record f whole -> Record f whole
- Data.RBR.Internal: toNP :: forall t result f. Productlike '[] t result => Record f t -> NP f result
- Data.RBR.Internal: toNS :: forall t result f. Sumlike '[] t result => Variant f t -> NS f result
- Data.RBR.Internal: toRecord :: (ToRecord r, Generic r, ToRecordHelper E (Rep r), RecordCode r ~ RecordCode' E (Rep r)) => r -> Record I (RecordCode r)
- Data.RBR.Internal: toRecord' :: ToRecordHelper start g => Record I start -> g x -> Record I (RecordCode' start g)
- Data.RBR.Internal: toVariant :: (ToVariant s, Generic s, ToVariantHelper (VariantCode s) (Rep s)) => s -> Variant I (VariantCode s)
- Data.RBR.Internal: toVariant' :: ToVariantHelper t g => g x -> Variant I t
- Data.RBR.Internal: type Empty = E
- Data.RBR.Internal: type FromList (es :: [(Symbol, q)]) = InsertAll es Empty
- Data.RBR.Internal: type IsRecordType (r :: Type) (t :: Map Symbol Type) = (Generic r, ToRecord r, RecordCode r ~ t, FromRecord r)
- Data.RBR.Internal: type IsVariantType (v :: Type) (t :: Map Symbol Type) = (Generic v, ToVariant v, VariantCode v ~ t, FromVariant v)
- Data.RBR.Internal: type ProductlikeSubset (subset :: Map Symbol q) (whole :: Map Symbol q) (flat :: [q]) = (KeysValuesAll (PresentIn whole) subset, Productlike '[] subset flat, SListI flat)
- Data.RBR.Internal: type RecordCode r = RecordCode' E (Rep r);
- Data.RBR.Internal: type SumlikeSubset (subset :: Map Symbol q) (whole :: Map Symbol q) (subflat :: [q]) (wholeflat :: [q]) = (KeysValuesAll (PresentIn whole) subset, Productlike '[] whole wholeflat, Sumlike '[] whole wholeflat, SListI wholeflat, Productlike '[] subset subflat, Sumlike '[] subset subflat, SListI subflat)
- Data.RBR.Internal: type family Delete k v t :: Map Symbol q;
- Data.RBR.Internal: unit :: Record f Empty
- Data.RBR.Internal: widen :: forall k v t f. Insertable k v t => Variant f t -> Variant f (Insert k v t)
- Data.RBR.Internal: widen1 :: InsertableHelper1 k v t => Variant f t -> Variant f (Insert1 k v t)
- Data.RBR.Internal: widen2 :: InsertableHelper2 ordering k v color left k' v' right => Variant f (N color left k' v' right) -> Variant f (Insert2 ordering k v color left k' v' right)
- Data.RBR.Internal: win :: Delable k v t => Variant f t -> Either (Variant f (Del k v t)) (f v)
- Data.RBR.Internal: win' :: DelableHelper ordering k v l kx vx r => Variant f (N color l kx vx r) -> Either (Variant f (Del' ordering k v l kx vx r)) (f v)
- Data.RBR.Internal: winL :: DelableL k v l kx vx r => Variant f (N color l kx vx r) -> Either (Variant f (DelL k v l kx vx r)) (f v)
- Data.RBR.Internal: winR :: DelableR k v l kx vx r => Variant f (N color l kx vx r) -> Either (Variant f (DelR k v l kx vx r)) (f v)
- Data.RBR.Internal: winnow :: forall k v t f. Deletable k v t => Variant f t -> Either (Variant f (Delete k v t)) (f v)
- Data.RBR.Internal: winnowI :: forall k v t. Deletable k v t => Variant I t -> Either (Variant I (Delete k v t)) v
- Data.RBR.Internal: }
- Data.RBR.Subset: branchSubset :: forall subset whole f. (Maplike subset, Maplike whole, Subset subset whole) => (Variant f whole -> Maybe (Variant f subset), Variant f subset -> Variant f whole)
- Data.RBR.Subset: eliminateSubset :: forall subset whole f r. (Maplike subset, Maplike whole, Subset subset whole) => Record (Case f r) whole -> Variant f subset -> r
- Data.RBR.Subset: fieldSubset :: forall subset whole f. (Maplike subset, Subset subset whole) => Record f whole -> (Record f subset -> Record f whole, Record f subset)
- Data.RBR.Subset: fromRecordSuperset :: forall r t whole. (IsRecordType r t, Maplike t, Subset t whole) => Record I whole -> r
- Data.RBR.Subset: getFieldSubset :: forall subset whole f. (Maplike subset, Subset subset whole) => Record f whole -> Record f subset
- Data.RBR.Subset: injectSubset :: forall subset whole f. (Maplike subset, Maplike whole, Subset subset whole) => Variant f subset -> Variant f whole
- Data.RBR.Subset: matchSubset :: forall subset whole f. (Maplike subset, Maplike whole, Subset subset whole) => Variant f whole -> Maybe (Variant f subset)
- Data.RBR.Subset: modifyFieldSubset :: forall subset whole f. (Maplike subset, Subset subset whole) => (Record f subset -> Record f subset) -> Record f whole -> Record f whole
- Data.RBR.Subset: projectSubset :: forall subset whole f. (Maplike subset, Subset subset whole) => Record f whole -> Record f subset
- Data.RBR.Subset: setFieldSubset :: forall subset whole f. (Maplike subset, Subset subset whole) => Record f subset -> Record f whole -> Record f whole
- Data.RBR.Subset: type Subset (subset :: Map Symbol q) (whole :: Map Symbol q) = KeysValuesAll (PresentIn whole) subset
+ TypeLevelRecordDot: type family Dot r n

Files

CHANGELOG.md view
@@ -1,5 +1,12 @@ # Revision history for red-black-record +## 2.1.6.0+- Added ToRecord instance for Generically+- Added module `TypeLevelRecordDot` in a secondary public library.++## 2.1.5.0+- Added cliftA_Record and cliftA2_Record.+ ## 2.1.4.0 - Added trivial FromRecord and ToRecord instances to Record. 
+ lib-dot/TypeLevelRecordDot.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE DataKinds,+             TypeOperators,+             TypeFamilies,+             TypeApplications,+             DeriveGeneric,+             StandaloneDeriving,+             DerivingStrategies,+             UndecidableInstances,+             KindSignatures,+             PartialTypeSignatures,+             FlexibleContexts,+             ScopedTypeVariables,+             StandaloneKindSignatures+#-}+-- | This module is for exploring record types in the REPL.+module TypeLevelRecordDot (Dot) where++import GHC.Generics (Generically(..))+import Data.RBR+import Data.Kind+import GHC.TypeLits++-- | Inspect the type of a field in a record+--+-- The idea is to use this type family in the REPL, using @kind!@ Mostly useful+-- with complex parameterized records whose fields vary a lot according to the+-- parameters.+--+-- If the record is at the "tip" of a function, the type family goes to the tip.+--+-- The records must have Generic instances.+-- https://hachyderm.io/@DiazCarrete/112342828307643526 +type Dot :: Type -> Symbol -> Type+type family Dot r n where+    Dot (a -> b) n = a -> Dot b n+    Dot r n = Value n (RecordCode (Generically r))
lib/Data/RBR.hs view
@@ -74,6 +74,8 @@        Maplike(..),        cpure_Record,        cpure'_Record,+       cliftA_Record,+       cliftA2_Record,        prettyShow_Record,        prettyShow_RecordI,        prettyShow_Variant,
lib/Data/RBR/Examples.hs view
@@ -53,7 +53,7 @@ >>> import Data.Proxy >>> import Data.Foldable >>> import Data.Monoid->>> import Data.Profunctor (Star(..))+>>> import Control.Arrow (Kleisli(..)) >>> import GHC.Generics (Generic) >>> import GHC.TypeLits >>> import qualified Data.Text@@ -168,7 +168,7 @@ {- $json1       We begin by creating a 'Record' of parsing functions, each paired with its-    corresponding field name. We use 'Star' to treat the functions directly as+    corresponding field name. We use 'Kleisli' to treat the functions directly as     'Applicative's.          Then we apply the transformation that we receive as parameter, which tweaks@@ -186,14 +186,14 @@               :: forall r c. (IsRecordType r c,                                Maplike c,                               KeysValuesAll (KeyValueConstraints KnownSymbol FromJSON) c) -              => (Record ((,) String :.: Star Parser Data.Aeson.Value) c -> Record ((,) String :.: Star Parser Data.Aeson.Value) c)+              => (Record ((,) String :.: Kleisli Parser Data.Aeson.Value) c -> Record ((,) String :.: Kleisli Parser Data.Aeson.Value) c)               -> Data.Aeson.Value                -> Parser r         parseSpecial transform =              let fieldParsers = transform $ -                    cpure'_Record (Proxy @FromJSON) $ \fieldName -> Comp (fieldName,Star parseJSON)-                applyName (Comp (fieldName,Star f)) = Star (\o -> explicitParseField f o (Data.Text.pack fieldName))-                Star objectParser = sequence_Record $ liftA_Record applyName fieldParsers+                    cpure'_Record (Proxy @FromJSON) $ \fieldName -> Comp (fieldName,Kleisli parseJSON)+                applyName (Comp (fieldName,Kleisli f)) = Kleisli (\o -> explicitParseField f o (fromString fieldName))+                Kleisli objectParser = sequence_Record $ liftA_Record applyName fieldParsers              in withObject "someobj" $ \o -> fromRecord <$> objectParser o     :} @@ -202,7 +202,7 @@ >>> instance FromRecord Person  >>> :{      instance FromJSON Person where -        parseJSON = parseSpecial (setField @"name" (Comp ("anothername",Star (\_ -> pure "foo"))))+        parseJSON = parseSpecial (setField @"name" (Comp ("anothername",Kleisli (\_ -> pure "foo"))))     :}  >>> Data.Aeson.eitherDecode @Person (fromString "{ \"anothername\" : null, \"age\" : 50 }")@@ -226,9 +226,9 @@               -> Data.Aeson.Value                -> Parser r         parseWithAliases aliases = -            let fieldParsers = cpure_Record (Proxy @(ValueConstraint FromJSON)) (Star parseJSON)-                mapKSS (K name) (Star pf) = Star (\o -> explicitParseField pf o (Data.Text.pack name))-                Star objectParser = sequence_Record $ liftA2_Record mapKSS aliases fieldParsers+            let fieldParsers = cpure_Record (Proxy @(ValueConstraint FromJSON)) (Kleisli parseJSON)+                mapKSS (K name) (Kleisli pf) = Kleisli (\o -> explicitParseField pf o (fromString name))+                Kleisli objectParser = sequence_Record $ liftA2_Record mapKSS aliases fieldParsers              in withObject "someobj" $ \o -> fromRecord <$> objectParser o     :} @@ -269,9 +269,9 @@             let subparser =                      sequence_Record $                         cpure'_Record (Proxy @FromJSON) $ \fieldName ->-                            Star (\o -> explicitParseField parseJSON o (Data.Text.pack fieldName))+                            Kleisli (\o -> explicitParseField parseJSON o (fromString fieldName))                 intoOriginal subrecord = fromRecord (S.setFieldSubset @subset subrecord (toRecord r))-                Star parser = intoOriginal <$> subparser+                Kleisli parser = intoOriginal <$> subparser              in withObject "someobj" parser     :} @@ -320,9 +320,9 @@               -> Parser r         parseAll =              let fieldParsers = cpure'_Record (Proxy @FromJSON) $ \fieldName -> -                    Star (\o -> explicitParseField parseJSON o (Data.Text.pack fieldName))+                    Kleisli (\o -> explicitParseField parseJSON o (fromString fieldName))                 injected = liftA2_Record (\f star -> K $ Alt $ runCase f . I <$> star) injections'_Variant fieldParsers -                Alt (Star parser) = collapse'_Record injected+                Alt (Kleisli parser) = collapse'_Record injected              in withObject "someobj" (\o -> fromVariant <$> parser o)     :} 
lib/Data/RBR/Internal.hs view
@@ -22,7 +22,9 @@              DefaultSignatures,              PartialTypeSignatures,              LambdaCase,-             EmptyCase +             EmptyCase,+             StandaloneKindSignatures+ #-} {-#  OPTIONS_GHC -Wno-partial-type-signatures  #-} @@ -38,7 +40,7 @@ import           Data.List (intersperse) import           Data.Foldable (asum) import           GHC.TypeLits-import           GHC.Generics (D1,C1,S1(..),M1(..),K1(..),Rec0(..))+import           GHC.Generics (D1,C1,S1(..),M1(..),K1(..),Rec0(..), Generically(..)) import qualified GHC.Generics as G  import           Data.SOP (I(..),K(..),unI,unK,NP(..),NS(..),All,SListI,type (-.->)(Fn,apFn),mapKIK,(:.:)(..),Top)@@ -79,13 +81,15 @@ -- In fact, if I delete KeysValuesAllF and use eclusively KeysValuesAll, functions like demoteKeys seem to still work fine. -- -- UndecidableSuperClasses and RankNTypes seem to be required by KeysValuesAllF.+type KeysValuesAllF :: (symbol -> q -> Constraint) -> Map symbol q -> Constraint type family-  KeysValuesAllF (c :: symbol -> q -> Constraint) (t :: Map symbol q) :: Constraint where-  KeysValuesAllF  _ E                        = ()-  KeysValuesAllF  c (N color left k v right) = (c k v, KeysValuesAll c left, KeysValuesAll c right)+  KeysValuesAllF c t :: Constraint where+  KeysValuesAllF _ E                        = ()+  KeysValuesAllF c (N color left k v right) = (c k v, KeysValuesAll c left, KeysValuesAll c right)  {- | Require a constraint for every key-value pair in a tree. This is a generalization of 'Data.SOP.All' from "Data.SOP". -}+type KeysValuesAll :: (symbol -> q -> Constraint) -> Map symbol q -> Constraint class KeysValuesAllF c t => KeysValuesAll (c :: symbol -> q -> Constraint) (t :: Map symbol q) where    --  'cpara_Map' constructs a 'Record' by means of a constraint for producing@@ -100,6 +104,7 @@ {- | This typeclass provides generalizations of 'Applicative'-like functions      which work over 'Record's and 'Variant's. -}+type Maplike :: Map Symbol Type -> Constraint class Maplike (t :: Map Symbol Type) where     {- |           See 'cpure_Record' and 'cpure'_Record' for more useful versions of@@ -240,7 +245,7 @@      The naming scheme follows that of 'Data.SOP.NP.cpure_NP'.  -}-cpure_Record :: forall c t f. KeysValuesAll c t => (Proxy c) -> (forall k v. c k v => f v) -> Record f t+cpure_Record :: forall c t f. KeysValuesAll c t => Proxy c -> (forall k v. c k v => f v) -> Record f t cpure_Record _ fpure = cpara_Map (Proxy @c) unit go     where     go :: forall left k' v' right color. (c k' v', KeysValuesAll c left, KeysValuesAll c right) @@ -259,7 +264,7 @@      The naming scheme follows that of 'Data.SOP.NP.cpure_NP'.  -}-cpure'_Record :: forall c t f. KeysValuesAll (KeyValueConstraints KnownSymbol c) t => (Proxy c) -> (forall v. c v => String -> f v) -> Record f t+cpure'_Record :: forall c t f. KeysValuesAll (KeyValueConstraints KnownSymbol c) t => Proxy c -> (forall v. c v => String -> f v) -> Record f t cpure'_Record _ fpure = cpara_Map (Proxy @(KeyValueConstraints KnownSymbol c)) unit go    where     go :: forall left k' v' right color. (KeyValueConstraints KnownSymbol c k' v', KeysValuesAll (KeyValueConstraints KnownSymbol c) left, KeysValuesAll (KeyValueConstraints KnownSymbol c) right) @@ -268,7 +273,37 @@        -> Record f (N color left k' v' right)     go left right = Node left (fpure @v' (symbolVal (Proxy @k'))) right  +type F1 :: (q -> Type) -> (q -> Type) -> Map Symbol q -> Type+newtype F1 f g t = F1 { unF1 :: Record f t -> Record g t } +{- | Apply a transformation to the type constructor which wraps the fields of a 'Record', with some constraints in scope.+ +     The naming scheme follows that of 'Data.SOP.NP.cliftA_NP'.+-}+cliftA_Record :: forall c t f g. KeysValuesAll c t => Proxy c -> (forall k v. c k v => f v -> g v) -> Record f t -> Record g t+cliftA_Record _ func = unF1 $ cpara_Map (Proxy @c) (F1 $ \_ -> unit) go+    where+    go :: forall left k' v' right color. (c k' v', KeysValuesAll c left, KeysValuesAll c right) +       => F1 f g left+       -> F1 f g right+       -> F1 f g (N color left k' v' right)+    go (F1 leftf) (F1 rightf) = F1 (\(Node left v right) -> Node (leftf left) (func @k' @v' v) (rightf right))++type F2 :: (q -> Type) -> (q -> Type) -> (q -> Type) -> Map Symbol q -> Type+newtype F2 f g h t = F2 { unF2 :: Record f t -> Record g t -> Record h t }++{- | +     The naming scheme follows that of 'Data.SOP.NP.cliftA2_NP'.+-}+cliftA2_Record :: forall c t f g h. KeysValuesAll c t => Proxy c -> (forall k v. c k v => f v -> g v -> h v) -> Record f t -> Record g t -> Record h t+cliftA2_Record _ func = unF2 $ cpara_Map (Proxy @c) (F2 $ \_ _ -> unit) go+    where+    go :: forall left k' v' right color. (c k' v', KeysValuesAll c left, KeysValuesAll c right) +       => F2 f g h left+       -> F2 f g h right+       -> F2 f g h (N color left k' v' right)+    go (F2 leftf) (F2 rightf) = F2 (\(Node left1 v1 right1) (Node left2 v2 right2) -> Node (leftf left1 left2) (func @k' @v' v1 v2) (rightf right1 right2))+ {- | Create a 'Record' containing the names of each field.            The names are represented by a constant functor 'K' carrying an annotation@@ -295,6 +330,7 @@    Defined using the "class synonym" <https://www.reddit.com/r/haskell/comments/ab8ypl/monthly_hask_anything_january_2019/edk1ot3/ trick>. -}+type KnownKey :: Symbol -> q -> Constraint class KnownSymbol k => KnownKey (k :: Symbol) (v :: q) instance KnownSymbol k => KnownKey k v  @@ -321,6 +357,7 @@    Defined using the "class synonym" <https://www.reddit.com/r/haskell/comments/ab8ypl/monthly_hask_anything_january_2019/edk1ot3/ trick>. -}+type KnownKeyTypeableValue :: Symbol -> q -> Constraint class (KnownSymbol k, Typeable v) => KnownKeyTypeableValue (k :: Symbol) (v :: q) instance (KnownSymbol k, Typeable v) => KnownKeyTypeableValue k v  @@ -329,6 +366,7 @@    Defined using the "class synonym" <https://www.reddit.com/r/haskell/comments/ab8ypl/monthly_hask_anything_january_2019/edk1ot3/ trick>. -}+type KeyValueConstraints :: (Symbol -> Constraint) -> (q -> Constraint) -> Symbol -> q -> Constraint class (kc k, vc v) => KeyValueConstraints (kc :: Symbol -> Constraint) (vc :: q -> Constraint) (k :: Symbol) (v :: q) instance (kc k, vc v) => KeyValueConstraints kc vc k v @@ -337,6 +375,7 @@    Defined using the "class synonym" <https://www.reddit.com/r/haskell/comments/ab8ypl/monthly_hask_anything_january_2019/edk1ot3/ trick>. -}+type ValueConstraint :: (q -> Constraint) -> Symbol -> q -> Constraint class (vc v) => ValueConstraint (vc :: q -> Constraint) (k :: Symbol) (v :: q) instance (vc v) => ValueConstraint vc k v @@ -350,7 +389,8 @@       See also 'insert', 'delete' and 'project'. -}-data Record (f :: q -> Type) (t :: Map Symbol q)  where+type Record :: (q -> Type) -> Map Symbol q -> Type+data Record (f :: q -> Type) (t :: Map Symbol q) where     Empty :: Record f E      Node  :: Record f left -> f v -> Record f right -> Record f (N color left k v right) @@ -419,6 +459,7 @@       See also 'widen', 'winnow' and 'inject'. -}+type Variant :: (q -> Type) -> Map Symbol q -> Type data Variant (f :: q -> Type) (t :: Map Symbol q)  where     Here       :: f v -> Variant f (N color left k v right)     LookRight  :: Variant f t -> Variant f (N color' left' k' v' t)@@ -475,6 +516,7 @@  {- | Insert a list of type level key / value pairs into a type-level map.  -}+type InsertAll :: [(Symbol,q)] -> Map Symbol q -> Map Symbol q type family InsertAll (es :: [(Symbol,q)]) (t :: Map Symbol q) :: Map Symbol q where     InsertAll '[] t = t     InsertAll ( '(name,fieldType) ': es ) t = Insert name fieldType (InsertAll es t)@@ -536,6 +578,7 @@      If the map already has the key but with a /different/ type, the      insertion fails to compile.  -}+type Insertable :: Symbol -> q -> Map Symbol q -> Constraint class Insertable (k :: Symbol) (v :: q) (t :: Map Symbol q) where     type Insert k v t :: Map Symbol q     _insert :: f v -> Record f t -> Record f (Insert k v t)@@ -550,8 +593,8 @@     _insert fv r = makeBlackR @_ (insert1 @_ @k @v fv r)      _widen v = makeBlackV @_ (widen1 @_ @k @v v) -class CanMakeBlack (t :: Map Symbol k) where-    type MakeBlack t :: Map Symbol k+class CanMakeBlack (t :: Map Symbol q) where+    type MakeBlack t :: Map Symbol q     makeBlackR :: Record f t -> Record f (MakeBlack t)     makeBlackV :: Variant f t -> Variant f (MakeBlack t) @@ -568,6 +611,8 @@     makeBlackR Empty = Empty     makeBlackV = impossible +-- for some reason, removing the "inline" kind signatures causes a compilation error+type InsertableHelper1 :: Symbol -> q -> Map Symbol q -> Constraint class InsertableHelper1 (k :: Symbol)                          (v :: q)                          (t :: Map Symbol q) where@@ -673,6 +718,7 @@                    | DoNotBalance                    deriving Show +type ShouldBalance :: Map k' v' -> Map k' v' -> BalanceAction type family ShouldBalance (left :: Map k' v') (right :: Map k' v') :: BalanceAction where     ShouldBalance (N R _ _ _ _) (N R _ _ _ _) = BalanceSpecial     ShouldBalance (N R (N R _ _ _ _) _ _ _) _ = BalanceLL@@ -803,6 +849,7 @@ -- {- | Auxiliary type family to avoid repetition and help improve compilation times.  -}+ type family Field (f :: q -> Type) (t :: Map Symbol q) (v :: q) where     Field f t v = Record f t -> (f v -> Record f t, f v) @@ -977,6 +1024,7 @@  {- | Represents a handler for a branch of a 'Variant'.   -}+type Case :: (q -> Type) -> Type -> q -> Type newtype Case f a b = Case { runCase :: f b -> a }  instance Functor f => Contravariant (Case f a) where@@ -995,7 +1043,7 @@ -- -- -- Subsetting-+type SetField :: (q -> Type) -> Type -> q -> Type newtype SetField f a b = SetField { getSetField :: f b -> a -> a }   {- | For a given 'Map', produces a two-place constraint confirming the presence@@ -1003,6 +1051,7 @@            Defined using the "class synonym" <https://www.reddit.com/r/haskell/comments/ab8ypl/monthly_hask_anything_january_2019/edk1ot3/ trick>. -}+type PresentIn :: Map Symbol q -> Symbol -> q -> Constraint class (Key k t, Value k t ~ v) => PresentIn (t :: Map Symbol q) (k :: Symbol) (v :: q)  instance (Key k t, Value k t ~ v) => PresentIn (t :: Map Symbol q) (k :: Symbol) (v :: q) @@ -1123,6 +1172,7 @@       The functions 'toNP' and 'fromNP' are usually easier to use.  -}+type Productlike :: [k] -> Map Symbol k -> [k] -> Constraint class Productlike (start :: [k])                   (t :: Map Symbol k)                    (result :: [k]) | start t -> result, result t -> start where@@ -1190,6 +1240,7 @@       The functions 'toNS' and 'fromNS' are usually easier to use.  -}+type Sumlike :: [k] -> Map Symbol k -> [k] -> Constraint class Sumlike (start :: [k])                (t :: Map Symbol k)                (result :: [k]) | start t -> result, result t -> start where@@ -1294,7 +1345,7 @@ -- -- -- Interfacing with normal records-+type ToRecord :: Type -> Constraint class ToRecord (r :: Type) where     type RecordCode r :: Map Symbol Type     -- https://stackoverflow.com/questions/22087549/defaultsignatures-and-associated-type-families/22088808@@ -1303,6 +1354,14 @@     default toRecord :: (G.Generic r,ToRecordHelper E (G.Rep r),RecordCode r ~ RecordCode' E (G.Rep r)) => r -> Record I (RecordCode r)     toRecord r = toRecord' unit (G.from r) +instance (+    G.Generic r,+    ToRecordHelper E (G.Rep r)+    ) =>+    ToRecord (Generically (r :: Type)) where+    type RecordCode (Generically (r :: Type)) = RecordCode' E (G.Rep r)+    toRecord (Generically r) = toRecord' unit (G.from r)+ class ToRecordHelper (start :: Map Symbol Type) (g :: Type -> Type) where     type RecordCode' start g :: Map Symbol Type     toRecord' :: Record I start -> g x -> Record I (RecordCode' start g)@@ -1338,6 +1397,7 @@  -- --+type FromRecord :: Type -> Constraint class ToRecord r => FromRecord (r :: Type) where     fromRecord :: Record I (RecordCode r) -> r     default fromRecord :: (G.Generic r, FromRecordHelper (RecordCode r) (G.Rep r)) => Record I (RecordCode r) -> r@@ -1346,6 +1406,7 @@ {- |      The naming scheme follows that of 'Generics.SOP.IsProductType'.  -}+type IsRecordType :: Type -> Map Symbol Type -> Constraint type IsRecordType (r :: Type) (t :: Map Symbol Type) = (G.Generic r, ToRecord r, RecordCode r ~ t, FromRecord r)  -- {- |@@ -1354,6 +1415,7 @@ -- fromRecordSuperset :: forall r subset whole flat. (FromRecord r, RecordCode r ~ subset, ProductlikeSubset subset whole flat) => Record I whole -> r -- fromRecordSuperset = fromRecord @r . projectSubset @subset @whole @flat +type FromRecordHelper :: Map Symbol Type -> (Type -> Type) -> Constraint class FromRecordHelper (t :: Map Symbol Type) (g :: Type -> Type) where     fromRecord' :: Record I t -> g x @@ -1383,15 +1445,18 @@ -- -- --+type VariantCode :: Type -> Map Symbol Type type family VariantCode (s :: Type) :: Map Symbol Type where     VariantCode s = VariantCode' E (G.Rep s) +type VariantCode' :: Map Symbol Type -> (Type -> Type) -> Map Symbol Type type family VariantCode' (acc :: Map Symbol Type) (g :: Type -> Type) :: Map Symbol Type where     VariantCode' acc (D1 meta fields) = VariantCode' acc fields     VariantCode' acc (t1 G.:+: t2) = VariantCode' (VariantCode' acc t2) t1     VariantCode' acc (C1 (G.MetaCons k _ _) (S1 ('G.MetaSel Nothing unpackedness strictness laziness) (Rec0 v))) = Insert k v acc     VariantCode' acc (C1 (G.MetaCons k _ _) G.U1) = Insert k () acc      +type FromVariant :: Type -> Constraint      class FromVariant (s :: Type) where     fromVariant :: Variant I (VariantCode s) -> s     default fromVariant :: (G.Generic s, FromVariantHelper (VariantCode s) (G.Rep s)) => Variant I (VariantCode s) -> s@@ -1402,6 +1467,7 @@ {- |      The naming scheme follows that of 'Generics.SOP.IsProductType'.  -}+type IsVariantType :: Type -> Map Symbol Type -> Constraint type IsVariantType (v :: Type) (t :: Map Symbol Type) = (G.Generic v, ToVariant v, VariantCode v ~ t, FromVariant v)  class FromVariantHelper (t :: Map Symbol Type) (g :: Type -> Type) where@@ -1437,6 +1503,7 @@  -- --+type ToVariant :: Type -> Constraint class ToVariant (s :: Type) where     toVariant :: s -> Variant I (VariantCode s)     default toVariant :: (G.Generic s, ToVariantHelper (VariantCode s) (G.Rep s)) => s -> Variant I (VariantCode s)@@ -1472,16 +1539,18 @@ -- -- ---+type DiscriminateBalL :: Map k v -> Map k v -> Bool  type family DiscriminateBalL (l :: Map k v) (r :: Map k v) :: Bool where     DiscriminateBalL (N R _ _ _ _) _ = False     DiscriminateBalL _             _ = True +type BalanceableL :: Map Symbol q -> Symbol -> q -> Map Symbol q -> Constraint class BalanceableL (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where     type BalL l k v r :: Map Symbol q     balLR :: Record f (N color l k v r) -> Record f (BalL l k v r)     balLV :: Variant f (N color l k v r) -> Variant f (BalL l k v r) +type BalanceableHelperL :: Bool -> Map Symbol q -> Symbol -> q -> Map Symbol q -> Constraint class BalanceableHelperL (b :: Bool) (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where     type BalL' b l k v r :: Map Symbol q     balLR' :: Record f (N color l k v r) -> Record f (BalL' b l k v r)@@ -1543,15 +1612,19 @@ -- balright a x (T R b y c) = T R a x (T B b y c) -- balright (T B a x b) y bl = balance (T R a x b) y bl -- balright (T R a x (T B b y c)) z bl = T R (balance (sub1 a) x b) y (T B c z bl)+type DiscriminateBalR :: Map k v -> Map k v -> Bool type family DiscriminateBalR (l :: Map k v) (r :: Map k v) :: Bool where     DiscriminateBalR _ (N R _ _ _ _) = False     DiscriminateBalR _ _             = True ++type BalanceableR :: Map Symbol q -> Symbol -> q -> Map Symbol q -> Constraint class BalanceableR (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where     type BalR l k v r :: Map Symbol q     balRR :: Record f (N color l k v r) -> Record f (BalR l k v r)     balRV :: Variant f (N color l k v r) -> Variant f (BalR l k v r) +type BalanceableHelperR :: Bool -> Map Symbol q -> Symbol -> q -> Map Symbol q -> Constraint class BalanceableHelperR (b :: Bool) (l :: Map Symbol q) (k :: Symbol) (v :: q) (r :: Map Symbol q) where     type BalR' b l k v r :: Map Symbol q     balRR' :: Record f (N color l k v r) -> Record f (BalR' b l k v r)@@ -1623,6 +1696,7 @@ -- app (T R a x b) c = T R a x (app b c)  +type Fuseable :: Map Symbol q -> Map Symbol q -> Constraint class Fuseable (l :: Map Symbol q) (r :: Map Symbol q) where     type Fuse l r :: Map Symbol q     fuseRecord :: Record f l -> Record f r -> Record f (Fuse l r)@@ -1686,6 +1760,7 @@     fuseRecord = fuseRecord1 @_ @(Fuse right1 left2)      fuseVariant = fuseVariant1 @_ @(Fuse right1 left2) +type FuseableHelper1 :: Map Symbol q -> Map Symbol q -> Map Symbol q -> Constraint class FuseableHelper1 (fused :: Map Symbol q) (l :: Map Symbol q) (r :: Map Symbol q) where     type Fuse1 fused l r :: Map Symbol q     fuseRecord1 :: Record f l -> Record f r -> Record f (Fuse l r)@@ -1851,6 +1926,8 @@ --      | x<y = delformLeft a y b --      | x>y = delformRight a y b --      | otherwise = app a b+-- removing the inline kind signatures here breaks stuff...+type Delable :: Symbol -> q -> Map Symbol q -> Constraint class Delable (k :: Symbol) (v :: q) (t :: Map Symbol q) where     type Del k v t :: Map Symbol q     del :: Record f t -> Record f (Del k v t)
red-black-record.cabal view
@@ -1,24 +1,23 @@-cabal-version:       2.0+cabal-version:       3.4 name:                red-black-record-version:             2.1.4.0+version:             2.1.6.0 synopsis:            Extensible records and variants indexed by a type-level Red-Black tree.  description:         A library that provides extensible records and variants,                      both indexed by a type-level red-black tree that maps                      Symbol keys to value types of any kind. -                     .+                                            The keys correspond to fields                      names in records, and to branch names in variants.-                     . +                                             At the term level, value types come wrapped in a type                      constructor of kind @q -> Type@, where @q@ is the kind of                      value types.-                     .                      The records and variants can be converted to and from                      regular Haskell datatypes; also to and from the unlabelled                      n-ary products and sums of the @sop-core@ package. -license:             BSD3+license:             BSD-3-Clause license-file:        LICENSE author:              Daniel Diaz maintainer:          diaz_carrete@yahoo.com@@ -26,6 +25,7 @@ extra-source-files:  CHANGELOG.md,                      README.md build-type:          Simple+tested-with: GHC ==9.8.1 || ==9.6.3  source-repository head     type: git@@ -41,6 +41,14 @@   hs-source-dirs:      lib   default-language:    Haskell2010 +library dot+  exposed-modules:     TypeLevelRecordDot+  build-depends:       base                 >= 4.10.0.0 && < 5,+                       red-black-record,+  hs-source-dirs:      lib-dot+  default-language:    Haskell2010+  visibility: public+ library demoted   exposed-modules:     Data.RBR.Demoted   build-depends:       base                 >= 4.10.0.0 && < 5,@@ -49,30 +57,28 @@   hs-source-dirs:      lib-demoted   default-language:    Haskell2010 -test-suite doctests+test-suite tests   type:                exitcode-stdio-1.0   hs-source-dirs:      tests-  ghc-options:         -threaded-  main-is:             doctests.hs-  build-depends:       base                 >= 4.10.0.0 && < 5,+  main-is:             tests.hs+  build-depends:+                       base                 >= 4.10.0.0 && < 5,                        sop-core             >= 0.4.0.0 && < 0.6,+                       tasty                >= 0.10.1.1,+                       tasty-hunit          >= 0.9.2,                        red-black-record,-                       aeson                >= 1.4.0.0 && < 1.5,-                       bytestring           >= 0.10,-                       text                 >= 1.1,-                       profunctors          >= 5,-                       doctest              >= 0.16.2+                       red-black-record:demoted   default-language:    Haskell2010 -test-suite tests+test-suite tests-generically   type:                exitcode-stdio-1.0   hs-source-dirs:      tests-  main-is:             tests.hs+  main-is:             tests-generically.hs   build-depends:                        base                 >= 4.10.0.0 && < 5,                        sop-core             >= 0.4.0.0 && < 0.6,                        tasty                >= 0.10.1.1,                        tasty-hunit          >= 0.9.2,                        red-black-record,-                       demoted+                       red-black-record:dot,   default-language:    Haskell2010
− tests/doctests.hs
@@ -1,8 +0,0 @@-import Test.DocTest--main = doctest ["-ilib", -                "lib/Data/RBR.hs",-                "lib/Data/RBR/Subset.hs",-                "lib/Data/RBR/Examples.hs",-                "lib/Data/RBR/Internal.hs"-               ]
+ tests/tests-generically.hs view
@@ -0,0 +1,59 @@+{-# LANGUAGE DataKinds,+             TypeOperators,+             TypeFamilies,+             TypeApplications,+             DeriveGeneric,+             StandaloneDeriving,+             DerivingStrategies,+             UndecidableInstances,+             KindSignatures,+             PartialTypeSignatures,+             FlexibleContexts,+             ScopedTypeVariables+#-}+{-# OPTIONS_GHC -Wno-partial-type-signatures #-}+module Main where++import Data.RBR+import TypeLevelRecordDot++import GHC.Generics (Generic, Generically(..))++import Test.Tasty+import Test.Tasty.HUnit (testCase,Assertion,assertEqual,assertBool)++main :: IO ()+main = defaultMain tests+++data Person = Person { +    personName :: String, +    address :: Address,+    func :: Bool -> Int -> Address +    }+    deriving stock (Generic)++data Address = Address { +    street :: String, +    number :: Int, +    other :: Int+    }+    deriving stock (Generic)++-- | Checking that 'Dot' has the proper associativity...+foo :: Person `Dot` "address" `Dot` "number" +foo = 5++foof :: Person `Dot` "func" `Dot` "number" +foof = \_ _ -> 3++tests :: TestTree+tests = testGroup "Tests" [ testCase "generically" testGenerically+    ]++testGenerically :: Assertion+testGenerically = do+    let r = Person "Foo" (Address "Somestreet" 1 2 ) (\_ _ -> Address "Somestreet" 1 2)+        a = Data.RBR.getFieldI @"address" (Data.RBR.toRecord (Generically r))+        n = Data.RBR.getFieldI @"number" (Data.RBR.toRecord (Generically a))+    assertEqual "number" n 1
tests/tests.hs view
@@ -67,6 +67,10 @@                             testGroup "polyKindedMap" [                                     testCase "polyKinded01" polyKinded01,                                     testCase "polyKinded02" polyKinded02+                            ],+                            testGroup "transformations" [+                                    testCase "testLiftA_Record" cliftA2_01,+                                    testCase "testLiftA2_Record" cliftA2_02                             ]                           ] @@ -554,3 +558,30 @@     return ()  +cliftA2_01 :: Assertion+cliftA2_01 = do+    let r = insertI @"foo" 'c'+          . insertI @"bar" True+          . insertI @"baz" (1::Int)+          $ unit+        r' = cliftA_Record (Proxy @(KeyValueConstraints KnownSymbol Show)) (\(I x) -> K (show x)) r+        K foo = getField @"foo" r'+        K bar = getField @"bar" r'+        K baz = getField @"baz" r'+    assertEqual "foo" foo "'c'"+    assertEqual "bar" bar "True"+    assertEqual "baz" baz "1"++cliftA2_02 :: Assertion+cliftA2_02 = do+    let r = insertI @"foo" 'c'+          . insertI @"bar" True+          . insertI @"baz" (1::Int)+          $ unit+        r' = cliftA2_Record (Proxy @(KeyValueConstraints KnownSymbol Show)) (\(I x) (I y) -> K (show x ++ show y)) r r+        K foo = getField @"foo" r'+        K bar = getField @"bar" r'+        K baz = getField @"baz" r'+    assertEqual "foo" foo "'c''c'"+    assertEqual "bar" bar "TrueTrue"+    assertEqual "baz" baz "11"