[Haskell-cafe] Re: Is Haskell a 5GL?
herrmann at uni-passau.de
Mon Sep 25 16:22:22 EDT 2006
Max Vasin wrote:
>>>>>> "Ch" == Ch A Herrmann <herrmann at uni-passau.de> writes:
>> it's a BottomthGL language :)
> Ch> That's a religious statement. I was looking for some strong
> Ch> arguments for the nonbelievers that Haskell is a 5GL.
> But what about nonbelievers in language classification by generation?
> As already mentioned you can write algorithms in Haskell (3GL), embed
> a DSL in it and write a program in that DSL or in several DSLs (4GL).
> AFAIK Mathematica is not a logic programming language, thus all its
> features can be implemented in Haskell as library, will be Haskell a 5GL
> in this case
I'm looking for an honest classification. The aim of the GLs is,
as I think, the degree of abstraction. The question is, how much
*intelligence* provided by preprocessing, libraries etc. is permitted.
Personally, I think Haskell should be a 5GL because Prolog is a 5GL.
What Prolog really provides concerning automatic problem solving
is little: equation solving in term algebra; you can simulate that
in Haskell without much effort. On the other hand, I saw Haskell
classified as a 3GL. The problem is that Haskell often exposes
the algorithmic structure. What people often forget is that Prolog
programs in non-trivial situations are likely to fail if you do
not prescribe the evaluation order, by features like the cut which
destroy the declarative semantics. People also forget that arithmetic
constraints in Prolog have to be directed (input/output variables),
no difference to Haskell.
My argumentation is:
Prolog is a 5GL & Haskell is more abstract than Prolog => Haskell is a 5GL
Some of the language features in Haskell that contribute to this
laziness, pattern matching with guards, list comprehensions, type classes
Please note that this is not a philosophic discussion. If Haskell is a 3GL,
than it is at the same level with Java and since Java is more common,
they should always use Java. Haskell as a 5GL will tell people: this is
in which you can solve problems simpler and safer and it will
encourage people to try to solve problems instead of resigning due to
the complexity of the problem.
More information about the Haskell-Cafe