suggestion: add a .ehs file type

Alex Jacobson alex at alexjacobson.com
Fri Nov 23 14:59:30 EST 2007


Cabal is not a solution to this problem because

1. you want your code to work via ghci and runhaskell and perhaps via 
searchpath.

2. you may want to move a module from one package to another and you 
don't want to have to examine the cabal file to figure out how to do 
that.  The source file should have enough information.

Extensions that change the interpretation of an already valid haskell 
source file really need to be declared explicitly e.g. 
undecidableinstances.

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.

-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



More information about the Glasgow-haskell-users mailing list