> > > Fail: Prelude.chr: bad argument
> >
> > nofib/real/compress2 fails with the same message, for us.
> > We haven't investigated. Perhaps it's the same bug.
>
> With a quick grep through the two programs, my guess is that 'toEnum'
> is being specialised at type Char to an internal function 'chr', and
> that the implementation of 'chr' only converts Ints up to some limit
> like 128. (Both programs apply toEnum to Ints in the range
> 128<c<256.)
>
> If this is the case, it should be easy to fix.
This is our chr:
chr :: Int -> Char
chr (I# i) | i >=# 0# && i <=# 255# = C# (chr# i)
| otherwise = error ("Prelude.chr: bad argument")
so it's not a problem with the 128--255 range. I plan to track down the
same message in compress2 using the profiler: you can get a stack trace at
the point where the exception is thrown now. You might like to try this
with NHC too.
Cheers,
Simon