[Haskell-cafe] positive Int

Neil Mitchell ndmitchell at gmail.com
Thu Aug 2 20:45:03 EDT 2007


Catch (www.cs.york.ac.uk/~ndm/catch) can infer that certain uses of
numbers fit into the {Neg, Zero, One, Pos} abstraction - so for
example it can infer that length returns {Zero, One, Pos}, but not
Neg. If you then do:

xs !! length ys

It will detect that length ys is natural, and will be safe. However,
if you pass any arbitrary value as the index to !! it will warn of a
possible pattern match error.

You can of course use type Nat = Int, and write additional
documentation, even if this documentation isn't a static guarantee.



On 8/2/07, brad clawsie <clawsie at fastmail.fm> wrote:
> as far as i know, the haskell standard does not define a basic Int
> type that is limited to positive numbers.
> would a type of this kind not potentially allow us to make stronger
> verification statements about certain functions?
> for example, 'length' returns an Int, but in reality it must always
> return a value 0 or greater. a potential counter-argument would be the
> need to possibly redefine Ord etc for this more narrow type...
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list