Cool, that's really interesting! So is it accurate to say "predicated" datatypes [1] such as Int and String are provided by Haskell but you cannot create them or specialize on a subset of them? And there are really only two types of datatypes, tags [2] and the "predicated" types. Compound datatypes are just a combination of the two.

-deech


[1] By predicated I mean a datatype that would actually cause a compiler error ( not a runtime error ) if a method returned an out-of-bounds value.
[2] By  tags I mean the data constructors, but I find it easier to think of them as tags because they can appear alone, eg. data Coins = Penny | Nickel | Dime | Quarter
where nothing is being constructed.

On Fri, May 8, 2009 at 5:06 PM, Magnus Therning <magnus@therning.org> wrote:
aditya siram wrote:
Hi all,
Is there a datatype in Haskell that can be used to represent only quantities >= 0?  I got bitten by a bug because I forgot to reject an amount that was below zero after applying a decrementing operator. A simple unit test would have caught this, but I was wondering if there was some way of getting the type system to ensure this.

Maybe Word32 (or one of it's siblings) would do?  It's basically the same as 'unsigned int' in C, so it can under- and over-flow.

/M

--
Magnus Therning                        (OpenPGP: 0xAB4DFBA4)
magnus@therning.org          Jabber: magnus@therning.org
http://therning.org/magnus         identi.ca|twitter: magthe


_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners