A Haskell library for kind-polymorphic manipulation and inspection of Proxy values
Haskell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Data/Proxy
LICENSE
README.markdown
Setup.hs
proxy-kindness.cabal

README.markdown

A small library for kind-polymorphic manipulation and inspection of Proxy values. Here are some usage examples:

Force @Left 1@ to be of type @Either Float a@ using a partially-applied 'Proxy'.

>>> let t = (Left 1) `asApplied` (Proxy :: Proxy (Either Float))
>>> :t t
t :: Either Float a

Do the same, but illustrating type application with @ap@

>>> let t0 = (Left 1) `asApplied` ((Proxy :: Proxy Either) `ap` (Proxy :: Proxy Float))
>>> :t t0
t0 :: Either Float a

Force polymorphic @undefined@ to some polymorphic @Either@ type, the base type of @t@ defined above.

>>> let u = undefined `asApplied` (unappliedOf t)
>>> :t u
u :: Either a a1