[Haskell-cafe] Re: Positive integers

Daniel McAllansmith dagda at xtra.co.nz
Thu Mar 23 20:52:13 EST 2006


On Friday 24 March 2006 13:14, Aaron Denney wrote:
> On 2006-03-24, Daniel McAllansmith <dagda at xtra.co.nz> wrote:
> > Unless I've missed it, there is no typeclass for positive integers in
> > GHC. Is there any particular reason it doesn't exist?
>
> The number of useable operations is small, and checks for leaving the
> domain would have to be done all the time.  It basically doesn't buy
> anything.

I can see the domain bounds check would be a problem in theory, but in 
practice doesn't the type enforce that?  Keeping Word positive costs nothing 
because it just overflows.  Wouldn't it be much the same?
Not that I'm really concerned about the absence, probably because of your 
other point.

>
> > Also, it seems Word would be a far better type in the likes of (!!),
> > length, etc.  Is it just tradition that resulted in the use of Int?
>
> No.  I'd like to be able to get the differences in length both positive
> and negative, for example.  (This could be fixed by making (+) and (-)
> instance of an MPTC, though, as additive torsors.)

An additive torsor is?

I'd maintain that the difference between two lengths is an entirely different 
quantity from the length of a list.  Though I'll admit the extra work 
converting to Integrals to get that quantity would be a pain, and probably 
not worth it.

I was more concerned about functions with Int as input, such as (!!), that can 
result in errors.
If practically feasible I would have preferred (!!) to take a Word rather than 
Int, even though you'd sometimes need bounds checks at fromInteger calls to 
be safe.


I suppose the 'correct' type for the index in (!!) would be
(Integral n, LowBounded n) => n
if such a low bound type class existed.


More information about the Haskell-Cafe mailing list