[TypeApplications] Create Proxy-free alternatives of functions in base
Now that we have TypeApplications how about we create a Proxy-free version of functions in base that currently require it:
tr :: forall a. Typeable a => TypeRep
tr = typeRep @Proxy @a Proxy
symbol :: forall s. KnownSymbol s => String
symbol = symbolVal @s Proxy
nat :: forall n. KnownNat n => Integer
nat = natVal @n Proxy
While we're at it let's use Natural as the value-level representation of Nat, avoiding Maybe in someNatVal :: Integer -> Maybe SomeNat:
nat :: forall n. KnownNat n => Natural
nat = natVal @n Proxy
someNatVal :: Natural -> SomeNat
someNatVal = ...
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.10.3 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Core Libraries |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | ekmett |
| Operating system | |
| Architecture |