GHC.TypeLits
usecases
someNatVal :: Integer -> Maybe SomeNat
code:hs
-- GHC.TypeNats
data SomeNat = forall n. KnownNat n => SomeNat (Proxy n)
-- GHC.TypeLits
someNatVal :: Integer -> Maybe N.SomeNat
someNatVal n
| n >= 0 = Just (N.someNatVal (fromInteger n))
| otherwise = Nothing
つまり、入力された自然数のデータを安全に型レベル自然数に変換できる
参考
良すぎる
この辺から読む
若干関係ないかもしれないが