Lang. (was Re: Alternative hierarchy proposal)

Malcolm Wallace
Mon, 12 Mar 2001 20:22:03 +0000

Simon Marlow wrote:

> I disagree.  Lang (or Language if you like, or HaskellLanguageFeatures)
> is a *semantic* category.  It contains libraries which provide access to
> language features.

Are you saying that there are language features which cannot be
accessed without these libraries?

> but in most cases it's obvious what belongs in Lang, and that's the main
> thing.

That's just the trouble: I don't find the contents of Lang to be
obvious at all.  I simply don't see the semantic relationship between
the various modules.  If I, as a Haskell language implementor, have
difficulty understanding it, I'm sure other people will too.

> On the other hand, Haskell in your proposal isn't a semantic category.
> The similarity between the contents seems to be in name only:  it's like
> saying that "Biography" and "Biology" books belong on the same shelf
> because they both begin with "Bio".

Well, I disagree completely.  I proposed "Haskell." precisely because
it /is/ a semantic category, in contrast to "Lang."  But that's just
my view.  Both you and Marcin don't see the connection, so I'll happily
retract that part of my layout proposal, and search for an even better

> By all means change the name "Lang" to something more mnemonic and
> unambiguous, but I like the current meaning (and I have to admit it was
> chosen for its similarity to Java and the existing hslibs layout).

I'm afraid I don't know enough about Java even to know what
java.lang.* contains!  And my confusion about Haskell.Lang. applies
equally to hslibs/lang.  I can't think of a less ambiguous name
for the category, because I simply don't know what the category is.

> I don't agree with separating extensions (as you probably noticed from
> my proposal :-).  If we separate language extensions into a separate
> hierarchy, code will be broken when/if these extensions become part of
> the base language.

I understand.  I'm even beginning to shift my point of view towards
yours.  But there remains a difficulty.  What if two people develop
similar extensions, but with different syntax/semantics, each in a
different compiler?

> I *do* however believe that extensions should be standardised, so that
> if a compiler implements a particular extension, it should match other
> implementations of that extension.

That depends on whether the original author of the extension got the
design right, doesn't it?  :-)