Я пытаюсь понять GHC.TypeLits
и, в частности, someNatVal
. Я понимаю, как он использовался в этом блоге здесь, здесь, но, как уже упоминалось, такой же пример можно было реализовать с помощью natVal
, например:
isLength :: forall len a. KnownNat len => Integer -> List len a -> Bool
isLength n _ = n == natVal (Proxy :: Proxy len)
Существуют ли какие-либо применения someNatVal
, которые нельзя переписать с помощью natVal
?