{-# LANGUAGE DataKinds,
TypeOperators,
TypeFamilies,
TypeApplications,
DeriveGeneric,
StandaloneDeriving,
DerivingStrategies,
UndecidableInstances,
KindSignatures,
PartialTypeSignatures,
FlexibleContexts,
ScopedTypeVariables,
StandaloneKindSignatures
#-}
module TypeLevelRecordDot (Dot) where
import GHC.Generics (Generically(..))
import Data.RBR
import Data.Kind
import GHC.TypeLits
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))