The proxy-kindness package

[Tags: bsd3, library]

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


Change logNone available
Dependenciesbase (==4.6.*), tagged [details]
AuthorBrandon Simmons
Home page
Source repositoryhead: git clone -b master
UploadedFri Nov 15 02:19:41 UTC 2013 by BrandonSimmons
Downloads282 total (0 in last 30 days)
0 []
StatusDocs available [build log]
Successful builds reported [all 1 reports]




Maintainers' corner

For package maintainers and hackage trustees