为什么Nat类型等于Liquid中的IntHaskell?

Why is Nat type equal to Int in Liquid Haskell?

为什么这个能通过LiquidHaskell验证?

{-@ sub :: Nat -> Nat -> Int @-}                                                                                                         
sub :: Int -> Int -> Int 
sub i j = i - j 

在LH看来NatInt是一样的吗?

假设你对我说,"Hey, I'd like an apple!"。我回复:"Sorry, I only have red apples."。你会很有趣地看着我,是吗?一个红苹果一个苹果!

如果一个函数要求一个 Int 作为参数,给它一个你知道不是负数的 Int 是没有问题的。