Skip to content

Instantly share code, notes, and snippets.

@kakkun61
Created February 15, 2022 14:50
Show Gist options
  • Save kakkun61/1900660f4f6c7f2ccc99ccdbc0f2f92a to your computer and use it in GitHub Desktop.
Save kakkun61/1900660f4f6c7f2ccc99ccdbc0f2f92a to your computer and use it in GitHub Desktop.
type Implicit :: (Type -> (Type -> Type) -> Type) -> (Type -> Type) -> Type
newtype Implicit a f = Implicit (a Covered f)
type ImplicitT :: ((Type -> (Type -> Type) -> Type) -> Type -> (Type -> Type) -> Type) -> (Type -> Type) -> ((Type -> Type) -> Type) -> Type
newtype ImplicitT t f a = ImplicitT (t (Explicit a) Covered f)
type Explicit :: ((Type -> Type) -> Type) -> Type -> (Type -> Type) -> Type
data family Explicit a b f
newtype instance Explicit a Covered f = Explicit (a f)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment