Cabal vs Haskell [sic]
S. Alexander Jacobson
alex at alexjacobson.com
Wed Apr 20 20:36:00 EDT 2005
Isaac,
> You are free to not use -package and you are free to not use
> build-depends and only use "-i". Nothing is forced on anyone. All
> you are saying is that "-package refers to a package."
I am looking for a module resolution mechanism that fulfills all the
requirements I posted. Neither Cabal nor -package nor -i nor any
combination of them does that. For example, neither individually nor
in combination do they allow me to share a naked implementation over
the Internet. And they fail on the measures to which I referred
earlier as well.
If you think some of my requirements don't need to be met that is
fine. However, I don't think you can claim that they are.
>> I think they are descriptive of vastly different ways to understand
>> a Haskell program. Under Haskell, the module is the starting point
>> for understanding a program. Under Cabal, the Cabal file is the
>> starting point for understanding a program (e.g. the main-is tag).
>
> No. Under Cabal, the .cabal file is the starting point for
> understanding a package.
It is Cabal's main-is tag that defines the entry point for
interpreting a program rather than Haskell's main function. It is
Cabal's build-depends tag that determines the meaning of import
statement rather than the Haskell source.
> The source code is still plain-old Haskell.
With Cabal, the source code is plain-old Haskell PLUS the plain-old
Cabal of the package that encapsulates it. And while I would agree
that Cabal is not changing the *syntax* of Haskell source, it is most
definitely changing its meaning.
Do you seriously want to argue that the two models are equivalent? I
think we should keep our eye on the ball here. The existing module
resolution mechanisms are inadequate to our needs. Lets focus on
building something that meets them.
-Alex-
______________________________________________________________
S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com
On Wed, 20 Apr 2005, Isaac Jones wrote:
> "S. Alexander Jacobson" <alex at alexjacobson.com> writes:
>
>>>> 1. It should require minimal work for a user to share an
>>>> implementation.
>>>
>>>> Unfortunately, our existing module resolver mechanisms are severely
>>>> inadequate here. Build-depends and -package both violate #1 because
>>>> they both force users to create packages even to share standalone pure
>>>> haskell modules.
>>>
>>> That's not true. Of course a single standalone pure haskell module or
>>> a set of simple modules can just sit in your source tree or elsewhere
>>> on the search path, just as they always have.
>>
>> Neither Build-depends nor -package support finding a naked
>> implementation at an arbitrary location in the filesystem. Both only
>> recognize modules that have been packaged. -i complies with #1, but
>> it violates "the works over the Internet" requirement.
>
> If build-depends or -package somehow took away the "-i" option, then
> it might be true that "they both force users to create packages even
> to share standalone pure haskell modules." But that's not the case.
>
> You are free to not use -package and you are free to not use
> build-depends and only use "-i". Nothing is forced on anyone. All
> you are saying is that "-package refers to a package."
>
>>> Also framing this as a "Cabal vs. Haskell" discussion where you claim
>>> that your opinion is the True Haskell Way is both unfair and annoying.
>>
>> If the names annoy you, please suggest alternatives.
>
> How about the "Cabal / HC-PKG approach vs the Alex Jacobson approach"?
> It's much less loaded.
>
>> I think they are descriptive of vastly different ways to understand
>> a Haskell program. Under Haskell, the module is the starting point
>> for understanding a program. Under Cabal, the Cabal file is the
>> starting point for understanding a program (e.g. the main-is tag).
>
> No. Under Cabal, the .cabal file is the starting point for
> understanding a package. The source code is still plain-old Haskell.
>
>>> - Cabal doesn't require any changes or extensions to the Haskell
>>> language (it's not Cabal vs. Haskell!)
>>
>> Yes it does! It requires that you understand Cabal to interpret a
>> Haskell program.
>
> Cabal is layered on top of the language. It doesn't change the
> language.
>
> (snip)
>> In any case, my goal in this discussion is to spur better
>> understanding of the model. Please do not take any of my comments as
>> a disparagement of any implementation.
>
> I'm not taking it like that. I'm trying to help clarify what I think
> are mischaracterizations on your part.
>
> peace,
>
> isaac
>
More information about the Libraries
mailing list