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 typeEither 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 polymorphicEither
type, the base type oft
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