suggestion: add a .ehs file type
Simon Marlow
simonmarhaskell at gmail.com
Mon Nov 26 04:26:13 EST 2007
Alex Jacobson wrote:
> Extensions that change syntax are effectively declared by the use of
> that syntax. If you can parse the source, then you know which
> extensions it uses.
I thought we'd already established that this isn't possible. Here are some
code fragments that parse differently depending on which extensions are
enabled:
f x y = x 3# y
f x = [d|d<-xs]
foreign x = x
f :: forall -> forall -> forall
You could argue that these syntax extensions are therefore badly designed,
but that's a separate discussion.
Cheers,
Simon
> -Alex-
>
>
> Duncan Coutts wrote:
>> On Fri, 2007-11-23 at 16:26 +0100, Wolfgang Jeltsch wrote:
>>> Am Freitag, 23. November 2007 03:37 schrieben Sie:
>>>> On Fri, 2007-11-23 at 01:50 +0100, Wolfgang Jeltsch wrote:
>>>>> Dont’t just think in terms of single modules. If I have a Cabal
>>>>> package,
>>>>> I can declare used extensions in the Cabal file. A user can decide
>>>>> not
>>>>> to start building at all if he/she sees that the package uses an
>>>>> extension unsupported by the compiler.
>>>> Indeed. In theory Cabal checks all the extensions declared to be
>>>> used by
>>>> the package are supported by the selected compiler. In practise I'm not
>>>> sure how well it does this or what kind of error message we get.
>>
>>> The problem is, of course, that you are not forced to specify all
>>> used extensions in the Cabal file since you can still use language
>>> pragmas. Sometimes it is even desirable to use LANGUAGE pragmas
>>> instead of information in the Cabal file. For example, even if some
>>> modules use undecidable instances, I might not want all modules of
>>> the package to be compiled with -XUndecidableInstances since this
>>> could hide problems with my class structure.
>>
>> Our tentative plan there is to separate the extensions field into those
>> used in some module, and those applied by cabal to every module. So that
>> would allow you to specify a feature in one file but not all, while
>> still declaring to the outside world that the package uses the feature.
>>
>> As for enforcing that, that may come almost for free when we get
>> dependency chasing as we'll be looking for imports anyway. It shouldn't
>> be much harder to look for language pragmas too.
>>
>> Duncan
>> _______________________________________________
>> Glasgow-haskell-users mailing list
>> Glasgow-haskell-users at haskell.org
>> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
More information about the cabal-devel
mailing list