Safe Haskell | None |
---|---|
Language | Haskell2010 |
Proarrow.Helper.CCC
Synopsis
- toCCC :: forall {k} (a :: FK k) (b :: FK k). (BiCCC k, IsFK a, IsFK b) => Free ('[] :: [FK k]) (a --> b) -> FromFree a ~> FromFree b
- lam :: forall {k} (a :: FK k) (b :: FK k) (i :: [FK k]). (IsFK a, IsFK b, IsFKs i) => ((forall (x :: [FK k]). Cast x (a ': i) => Free x a) -> Free (a ': i) b) -> Free i (a --> b)
- ($) :: forall {k} (a :: FK k) (b :: FK k) (i :: [FK k]). (IsFK a, IsFK b, IsFKs i) => Free i (a --> b) -> Free i a -> Free i b
- lift :: forall {k} (a :: k) (b :: k) (i :: [FK k]). (a ~> b) -> Free i ('F a) -> Free i ('F b)
- pattern (:&) :: (IsFK a, IsFK b, IsFKs i) => Free i a -> Free i b -> Free i (a *! b)
- data Free (a :: [FK k]) (b :: FK k) where
- either :: forall {k} (a :: FK k) (b :: FK k) (c :: FK k) (i :: [FK k]). (IsFK a, IsFK b, IsFK c, IsFKs i, Closed k) => Free i (a --> c) -> Free i (b --> c) -> Free i (a + b) -> Free i c
- data family InitF :: k
- data family TermF :: k
- data family (a :: k) *! (b :: k) :: k
- data family (a :: k) + (b :: k) :: k
- data family (a :: k) --> (b :: k) :: k
- data FK k = F k
Documentation
toCCC :: forall {k} (a :: FK k) (b :: FK k). (BiCCC k, IsFK a, IsFK b) => Free ('[] :: [FK k]) (a --> b) -> FromFree a ~> FromFree b Source Comments #
Adapted from Phil Freeman: https://blog.functorial.com/posts/2017-10-08-HOAS-CCCs.html
lam :: forall {k} (a :: FK k) (b :: FK k) (i :: [FK k]). (IsFK a, IsFK b, IsFKs i) => ((forall (x :: [FK k]). Cast x (a ': i) => Free x a) -> Free (a ': i) b) -> Free i (a --> b) Source Comments #
($) :: forall {k} (a :: FK k) (b :: FK k) (i :: [FK k]). (IsFK a, IsFK b, IsFKs i) => Free i (a --> b) -> Free i a -> Free i b infixr 0 Source Comments #
lift :: forall {k} (a :: k) (b :: k) (i :: [FK k]). (a ~> b) -> Free i ('F a) -> Free i ('F b) Source Comments #
pattern (:&) :: (IsFK a, IsFK b, IsFKs i) => Free i a -> Free i b -> Free i (a *! b) Source Comments #