-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I am trying to write a haskell compiler and i have stumbled upon 2
issues that i don't understand in the Haskell report 2010. Btw. these
issues are also present in the 98 report.

1)
first is this in section 5.1 Module Structure [1]. A module is defined
like this.

        module  →       module modid [exports] where body
                |       body
        body    →       { impdecls ; topdecls }
                |       { impdecls }
                |       { topdecls }

You can't see it in this mail because there is no font but
the curly braces { } are meant to match the tokens { } and are not
meant as repetition. However, as I understand it, the layout parser
would modify this code:

        module Foo where
        import Bar
        baz=baz

to this code (which doesn't match):

        module Foo where { import Bar ; baz=baz }

and not to this code (which would be required to match):

        module Foo where { { import Bar } ; { baz=baz } }

So as i see the definition should state this instead:

        module  →       module modid [exports] where body
                |       body
        body    →       { impdecls ; topdecls }
                |       impdecls
                |       topdecls

2)
In the same section what is it supposed to mean if "module" consists
of only a "body" and not "module modid [exports] where body".

3)
In section 10.3 Layout [2] it is written.

If a let, where, do, or of keyword is not followed by the lexeme {,
the token {n} is inserted after the keyword, where n is the
indentation of the next lexeme if there is one, or 0 if the end of
file has been reached.

Together with this rule

        L [] (m : ms) = }  :  L [] ms         if m≠0 (Note 6)

This results in an error if the program ends in a "where", ...
Wouldn't it make more sense to put a {1} in case of EOF or just insert
the tokens '{' and '}'. On the other hand if you really won't accept
that why not simply say that it is an error.

btw. GHC doesn't give an error.

[1]
http://www.haskell.org/onlinereport/haskell2010/haskellch5.html#x11-990005.1
[2]
http://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJPCdgeAAoJEDLsP+zrbatWIjgP/RLISOIz6xZRDso/mVn+xbwh
eMPdeqmzJJYpVm+sDdjmoEIAsrwXtYKc9r8LrlUOugbtXFhYYPcSox7Te4DO+Cm+
X+b8b80UQu1nKNoUofDqAXSQb/n7f5zgmaIoF2uvFieuJTE709oZCmBdTgupVdyJ
D16VqmKmqpskNepnQuh9rV7vwSPs4PjnsUQDpxjXDvh0tSdp9byBZPcMwEgQb172
FJAAryCuKFBE8FRG+ANlSw2h8fH7rkMLmkjabje5NKtLa2UMKvBlXYa2p0EZwcd2
/bj/2GTksWdsDmqFp3lQJgPk2uxp5reosTiTk5JQz56GcPOTK3wmL62qDeH3+tdS
pX5ZD8HeX8RdkLjuFi0fjiJq3L4HEy+OqHbLWoStPPqfY9clueSUJ0g0Dfc4OukU
0naJlASxKr4ovHBiTinrLI6bTTeeMj9QCDGh5hU0x1hJ5f80iQQaKYpI8cq1DxQv
CICBFibFnbJ0Zfzfuk0ZJZ8Db1dJUdEGSYZo/QCtpxXwTyKr4zEU6FYHprScRRX8
H6ZDnVE6ZbzDbaUqeQVBXvUGHF+2vTmDo1EZ80BFhDVHjifvV9eHslbF0XD+NjYY
iRPsgDzACYsMxvYaBsRlXWwmwWD+EfNerdHZL6h9dBZICwSr0pu4SCp616BR2BpK
IuO4MG/B5vAoCs9cb0lG
=O6Wd
-----END PGP SIGNATURE-----

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to