为什么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看来Nat
和Int
是一样的吗?
假设你对我说,"Hey, I'd like an apple!"。我回复:"Sorry, I only have red apples."。你会很有趣地看着我,是吗?一个红苹果是一个苹果!
如果一个函数要求一个 Int
作为参数,给它一个你知道不是负数的 Int
是没有问题的。
为什么这个能通过LiquidHaskell验证?
{-@ sub :: Nat -> Nat -> Int @-}
sub :: Int -> Int -> Int
sub i j = i - j
在LH看来Nat
和Int
是一样的吗?
假设你对我说,"Hey, I'd like an apple!"。我回复:"Sorry, I only have red apples."。你会很有趣地看着我,是吗?一个红苹果是一个苹果!
如果一个函数要求一个 Int
作为参数,给它一个你知道不是负数的 Int
是没有问题的。