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


Versions 0.1
Dependencies base (==4.6.*), tagged [details]
License BSD3
Author Brandon Simmons
Category Data
Home page
Source repository head: git clone -b master
Uploaded Fri Nov 15 02:19:41 UTC 2013 by BrandonSimmons
Distributions NixOS:0.1
Downloads 322 total (1 in the last 30 days)
0 []
Status Docs available [build log]
Successful builds reported [all 1 reports]




Maintainer's Corner

For package maintainers and hackage trustees