The proxy-kindness package

[ Tags: bsd3, data, library ] [ Propose Tags ]

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 356 total (2 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs available [build log]
Successful builds reported [all 1 reports]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees