On 26 Nov 2007, at 15:15, Henning Thielemann wrote:
>> On Thu, 4 Oct 2007, Don Stewart wrote:
>>> The Haskell website has the rather strange motivational text:
>>>> Haskell is a general purpose, purely functional programming
>> language
>> featuring static typing, higher order functions, polymorphism,
>> type
>> classes, and monadic effects. Haskell compilers are freely
>> available
>> for almost any computer.
>> To continue an old thread: What about turning the strange words like
> 'monadic effects' into links to glossary articles?
>> Btw. where is 'lazy' ?
I believe the point of this discussion was that anyone reading the
Haskell webpage will currently get about as far as "featuring static
typing", and go "this is all very nice, but what exactly does this
language do for me? Why should I use it?". Take for example what the
python website says:
Python is a dynamic object-oriented programming language that can be
used for many kinds of software development. It offers strong support
for integration with other languages and tools, comes with extensive
standard libraries, and can be learned in a few days. Many Python
programmers report substantial productivity gains and feel the
language encourages the development of higher quality, more
maintainable code.
People can instantly go "great, lots of kinds of development, it may
work for me; good integration with other languages, that'll be really
good for working with my existing codebase; extensive standard
libraries, excellent, I shouldn't have problems with finding the
functions I need; can be learned in a few days, excellent, won't need
to pay much to train the monkeys; high quality maintainable code,
that's really good, that'll save me a bundle later".
There's no such check list of "good stuff" with the Haskell slogan,
instead, we've got a list of buzzwords, as bad as company webpages
preaching that they offer "synergised solutions", but not actually
telling anyone what they do.
Sorry this has turned into a bit of a rant. I guess I should add
something constructive. I think the key points that we should mention
about Haskell are:
• It's functional
• It can be used for a lot of problems, most prominently compiler
building and highly mathematical problems
• There are freely available compilers that produce well optimised
code competative with modern imperative lanugages (debian language
shootout backs us up -- we use less memory and less CPU than C#
amongst others)
• Higher orderness allows for removing large amounts of boiler plate
code, significantly simplifying programs
• Static type checking gives us stronger guarentees about our
program's behavior than most languages, while still providing a lot of
flexibility.
Perhaps something like this:
Haskell is a functional programming language. It can be used for lots
of kinds of development, and is particularly strong for writing
parsers and mathematical algorithms. Freely available Haskell
compilers can produce highly optimised code that is competative with
modern imperative languages. Several language features like Higher
order functions and static type checking help to encourage and enforce
good programming techniques, and weed out common bugs.
There's my 2¢
Tom Davie