Skip to content

[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
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information