proxy-kindness

Version 0.1 revision 0 uploaded by BrandonSimmons.

Package meta

Synopsis
A library for kind-polymorphic manipulation and inspection of Proxy values
Description

It can be useful (especially with PolyKinds) to get the "bare" type (e.g. Either) of some parameterized type (e.g. Either Char Int). This library provides closed classes that can strip and reapply type arguments, as well as useful utility functions. Here are some 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
Author
Brandon Simmons
Bug reports
n/a
Category
Data
Copyright
n/a
Homepage
https://github.com/jberryman/proxy-kindness
Maintainer
brandon.m.simmons@gmail.com
Package URL
n/a
Stability
n/a

Components