GHC.TypeLits
code: (hs)
ghci> import Data.Proxy
ghci> import GHC.TypeLits
ghci> :set -XDataKinds
ghci> :t Proxy :: Proxy "abc"
Proxy :: Proxy "abc" :: Proxy "abc"
型レベル文字列を値にする例
code: (hs)
ghci> :t symbolVal
symbolVal :: KnownSymbol n => proxy n -> String
ghci> p = Proxy :: Proxy "abc"
ghci> symbolVal p
"abc"
型レベル自然数を値にする例
code:_
ghci> :t natVal
natVal :: KnownNat n => proxy n -> Integer
ghci> p2 = Proxy :: Proxy 100
ghci> natVal p2
100