X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fbugs.xml;h=9b167ccbc912e090b37f9543e96cedf00c756208;hb=d19c829904aec3be6bc807640573fdf5dcf05928;hp=4d79d24268e5e587434f157e41e8559d1ece1dd4;hpb=41b9dfa595948df05e3f1370861ec9869ec852bb;p=ghc-hetmet.git diff --git a/docs/users_guide/bugs.xml b/docs/users_guide/bugs.xml index 4d79d24..9b167cc 100644 --- a/docs/users_guide/bugs.xml +++ b/docs/users_guide/bugs.xml @@ -5,7 +5,7 @@ Haskell 98 vs. Glasgow Haskell: language non-compliance - + GHC vs the Haskell 98 language Haskell 98 language vs GHC @@ -19,11 +19,11 @@ Divergence from Haskell 98 - - + + Lexical syntax - + Certain lexical rules regarding qualified identifiers @@ -36,10 +36,10 @@ - + Context-free syntax - + GHC is a little less strict about the layout rule when used @@ -101,14 +101,14 @@ main = do args <- getArgs . See . - + Module system and interface files - + GHC requires the use of hs-boot files to cut the recursive loops among mutually recursive modules as described in . This more of an infelicity - than a bug: the Haskell Report says + than a bug: the Haskell Report says (Section 5.7) "Depending on the Haskell implementation used, separate compilation of mutually recursive modules may require that imported modules contain @@ -141,7 +141,7 @@ checking for duplicates. The reason for this is efficiency, pure and simple. - + @@ -192,15 +192,21 @@ checking for duplicates. The reason for this is efficiency, pure and simple. - - Strings treated as ISO-8859-1 - - - Various library functions, such as putStrLn, - treat Strings as if they were ISO-8859-1 rather than UTF-8. - - - + + hGetContents + + + Lazy I/O throws an exception if an error is + encountered, in contrast to the Haskell 98 spec which + requires that errors are discarded (see Section 21.2.2 + of the Haskell 98 report). The exception thrown is + the usual IO exception that would be thrown if the + failing IO operation was performed in the IO monad, and can + be caught by System.IO.Error.catch + or Control.Exception.catch. + + + @@ -245,7 +251,7 @@ checking for duplicates. The reason for this is efficiency, pure and simple. the Int type. The fromIntegerfromInteger - function (and hence + function (and hence also fromIntegralfromIntegral ) is a special case when converting to Int. The value of @@ -259,7 +265,7 @@ checking for duplicates. The reason for this is efficiency, pure and simple. Negative literals, such as -3, are - specified by (a careful reading of) the Haskell Report as + specified by (a careful reading of) the Haskell Report as meaning Prelude.negate (Prelude.fromInteger 3). So -2147483648 means negate (fromInteger 2147483648). Since fromInteger takes the lower 32 bits of the representation, @@ -296,8 +302,26 @@ checking for duplicates. The reason for this is efficiency, pure and simple. - + + + + Divergence from the FFI specification + + + + hs_init() not allowed + after hs_exit() + + The FFI spec requires the implementation to support + re-initialising itself after being shut down + with hs_exit(), but GHC does not + currently support that. + + + + + @@ -324,7 +348,7 @@ checking for duplicates. The reason for this is efficiency, pure and simple. - GHC does not allow you to have a data type with a context + GHC does not allow you to have a data type with a context that mentions type variables that are not data type parameters. For example: @@ -345,10 +369,10 @@ checking for duplicates. The reason for this is efficiency, pure and simple. using the standard way to encode recursion via a data type: data U = MkU (U -> Bool) - + russel :: U -> Bool russel u@(MkU p) = not $ p u - + x :: Bool x = russel (MkU russel) @@ -390,7 +414,7 @@ checking for duplicates. The reason for this is efficiency, pure and simple. module (whatever that is). - + On Windows, there's a GNU ld/BFD bug whereby it emits bogus PE object files that have more than 0xffff relocations. When GHCi tries to load a package affected by this @@ -415,7 +439,6 @@ Loading package javavm ... linking ... WARNING: Overflown relocation field (# re