[Haskell-cafe] naturally, length :: a -> Int

Ben Franksen ben.franksen at online.de
Tue Mar 2 12:52:56 UTC 2021

Am 01.03.21 um 17:45 schrieb Johannes Waldmann:
> let's fight Int.

I'm in.

> In a lot of code I write (for research, teaching, production),
> a lot of numbers are in fact natural numbers -
> because I am counting (e.g., number of elements in a collection)
> or pointing into what I just counted (e.g., Data.Set.elemAt).
> But Haskell's "most natural" type is - Int.
> At least that's my impression from current usage in libraries
> and teaching examples (see functions length, replicate, ... ).
> I've developed a horror
> of reading and writing "length something :: Int".

Same here.

> If I want to live risky (no checks) I could use Data.Word.

I think Data.Word is not so bad. Does it come with a guarantee that
maxBound=2^n-1 and all operations being treated module 2^n, for some
natural number n? That would be fine for most applications I guess.

It would be nice if one could change the semantics of under- or overflow
for Data.Word with a compiler flag, e.g. so that it throws an exception.

> That's all fine and dandy - until I call some library function...

I would support a move Int->Word in all libraries where that makes sense.

But I doubt it will happen.


More information about the Haskell-Cafe mailing list