| Why muddle implementation with language design?  Pick a design that
| we know everyone can implement -- e.g., exported functions must have
| type declarations -- and stick to that.  When the state of implementations
| improve, the specification for Haskell 1.5 can change accordingly.  -- P

Actually, we don't know that everyone can implement the design you suggest.
To make sense of the type signature you have to do a completely separate
scope analysis of the source code of the imported module, so that you know
what "T", say, in the type signature of an exported function means.

GHC will do that but it doesn't yet.  Currently you have to fiddle with
GHC-specific interface files. I don't know what Hugs does, nor hbc.

That is why I suggested the form of words I did.  If you like, we could be
more specific, but then there won't be any conforming implementations for a
while!

This isn't muddling implemenation with language design.  The language design
says mutual recursion is OK. A particular implementation supporting separate
compilation will typically require a variety of "help", such as a Makefile
with accurate dependencies.  Requiring type signatures, or interface files,
or whatever is just another implementation specific thing to support
separate compilation.

Simon



Reply via email to