Simon's message yesterday boils down to
"solve the problem using CPP"
Although hardly beautiful, it seems to work and means we don't need another new
feature. Is that acceptable to David & David?
Simon
| -----Original Message-----
| From: [email protected] [mailto:[email protected]] On
Behalf Of
| Simon Peyton-Jones
| Sent: 26 July 2011 08:13
| To: David Terei; Ian Lynagh
| Cc: [email protected]; David Mazieres expires 2011-10-22 PDT
| Subject: RE: Safe Haskell
|
| [Widening to cvs-ghc because others may have opinions]
|
| | > Generally, if you want to put a language extension in a pragma then the
| | > compiler needs to support that extension, or compilation will fail.
| | > There may be some odd exceptions (the main one that comes to mind is
| | > {-# LANGUAGE NoSomeExtensionYouDoNotHave #-}; most of the Safe and
| | > Trustworthy functionality is similar to that, really) but I'm not
| | > convinced that LANGUAGE_MAYBE is the right solution.
| |
| | I understand the concern here but would like to hear from the Simon's
| | before weighing in. Simon's if you could offer you opinions that would
| | be great as I'd like to carry on with the work on making the libraries
| | included with GHC safe.
|
| Simon M is on holiday this week, and I have not been following the discussion
| properly. I believe the question at issue is this.
|
| * "LANGUAGE Foo" means that the module uses language extension Foo, and won't
| compile unless the compiler supports Foo
|
| * But Safe Haskell for the first time is a language *restriction*. You are
| questioning {-# LANGUAGE SafeHaskell #-} (or trustworthy or something)
| because it *reduces* the set of programs accepted, but does not *increase*
them.
| So an old compiler that knows nothing of SafeHaskell would compile the
module
| just fine.
|
| * So you don't want to add lots of {-# LANGUAGE SafeHaskell #-} pragmas that
would
| mean
| you couldn't compile the module with an older compiler.
|
| * Ian responded that if you use "import safe" then you are *increasing* the
| language accepted. You didn't respond, except to say that you "don't have
to use
| import safe". But that is a problem isn't it?
|
| It occurs to me that restricting the language is a bit like
"-fwarn-unused-bindings -
| Werror". That also restricts the language, this time to programs that don't
have any
| unused bindings. So another alternative would be
|
| {-# OPTIONS_GHC -safe #-}
|
| But again, older GHCs will simply reject such programs with "unknown flag".
But
| perhaps un-recognised flags should only be warned about, rather than errored
about?
| After all, we could imagine adding lots of cunning flags that do extra
checks, but
| older compilers should still compile the module.
|
| So your proposal is
| {-# LANGUAGE_MAYBE SafeHaskell #-}
| where LANGUAGE_MAYBE flags are ignored (albeit with a warning) if
unrecognised. I
| kind of like that. Maybe LANGUAGE_RESTRICTION?
|
| I'm a bit reluctant to commit to something before Simon M gets back (in a
week's
| time).
|
| Simon
|
|
|
|
|
| _______________________________________________
| Cvs-ghc mailing list
| [email protected]
| http://www.haskell.org/mailman/listinfo/cvs-ghc
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc