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