Known bugs in nhc13


Bugs by design :-)

n+k patterns
are not supported at all by nhc13.
the monomorphism restriction
is not implemented.
the Unicode character set
is not supported yet - characters are still 8-bit.
Latin-ISO-8859-1 character set not fully supported
Example program.
Overloaded cafs are treated as functions (debatable "problem")
Example program.

Unintended bugs :-(

Strictness annotations on named-field labels
are not implemented - although you can use strictness annotations elsewhere.
Precursor to one below
Example program.
Type checking: default declarations
Example program.
Bizarre error on seq interacting with classes
Example program.
Using an imported renaming type to define a second renaming type
Example module. Example program.
Re-defining Prelude entities should strictly speaking cause an error
Example program.
Importing qualified Prelude and then using an unqualified Prelude entity
Example program.
Contexts required in let-bindings
Example program.

Fixed bugs :-)

GreenCard parser
fixed 981103
did not notify syntax errors - it simply generated bogus Haskell and C. (This was because the original GreenCard parser was generated by Happy, which can only be used in conjunction with ghc. For nhc13, we had been using a cheap and cheerful parser combinator library without error-detection. We have now added error-detection to the combinators.)
Unknown instruction 199
fixed 980827
A GreenCard-ed program which called C which called back to Haskell which called out to C again would sometimes fail with this error. The system simply forgot to stack the outward call contexts and so returned to the wrong place.
Prelude.product
fixed 980702
Incorrectly defined as foldl (*) 0, rather than foldl (*) 1.
Garbage collecting BinHandles
fixed 980702
When the GC collected a Memory BinHandle, it first tried to close it, which occasionally called the GC again recursively, generating a segmentation fault.
multiple-precision integers
fixed 980407
The functions (>) and (>=) were semantically swapped for multiple-precision integers (type Integer).
GreenCard
fixed 980323
A C function of type () -> IO a was only ever called once (and the result shared with all other calls), because the unit argument was stripped, leaving a zero-arity CAF. This is now fixed so that the unit argument is passed through, forcing re-evaluation with every call.
Binary library
fixed 980302
closeBin operation sometimes caused unexpected effects - both closeBin and the garbage collector free'd the same malloc'd memory
Pattern matching with no fields against constructions with no fields
fixed 980203
Example program.
sparc space faults
fixed 971120 - userGC structure allocated wrong amount of space.
Occasionally GreenCard crashed horribly on the sparc architecture with a segmentation fault, which went away if you increased the heapsize. Also, programs compiled with -p on the sparc crashed when you attempted to gather a runtime profile.
Importing qualified names
Example module. Example program.
Internal error on incorrect program
Symptom: "0" where "t Int" should be.
Example program.
Parsing an integer literal as a Double
Example program.
Strictness annotations combining with seq
Example program.
Parsing literal characters, e.g. read "'a'"
Example program.
Importing/exporting classes without any methods (pedantic)
Example module. Example program.
Printing doubles less than 0.1
Example program.
Supplying a function to seq as its second argument
Example program.
Translating do-notation for a pattern of the form `[a]'
Example program.

Reporting bugs

Please notify any bugs you find in any part of the nhc13 system to nhc-bugs@cs.york.ac.uk.

The latest updates to these pages are available on the WWW from http://www.cs.york.ac.uk/fp/nhc13/

1998.11.05
York Functional Programming Group
Malcolm.Wallace@cs.york.ac.uk