[Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-19 Thread Heinrich Apfelmus

Henning Thielemann wrote:

Vo Minh Thu schrieb:


Every once in a while, a discussion about the top-level text on
Haskell.org pops in this list. Without paying much attention to this
thread, and without digging the older threads, it occurs to me that
different people have very different opinion on this subject. I think
this is not a problem at all, because of the following thought:

When someone is interested enough in a programming language to land on
its homepage (i.e. haskell.org here), that someone has enough
resources at her disposal to make a somewhat informed choice, and
those resources can't be only a top-level text on the homepage.


When thinking about What would I like to see when judging a programming
language?, I found that I most like a gallery of small example programs.


I started such a gallery in the style of a restaurant menu some years 
ago, but never got around to finishing it:


  http://www.haskell.org/haskellwiki/Haskell_a_la_carte


Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-18 Thread DavidA
Ketil Malde ketil at malde.org writes:

 
 Don Stewart dons at galois.com writes:
 
  Good start, if only the advanced were replaced with something more
  characteristic, like lazy, or statically typed. Which, BTW, both do not
 
  lazy and statically typed don't mean much to other people. They are
  buzz words that mean nothing to many people.
 
 But they /are/ defining characteristics of the language, still.  I think
 they should be mentioned, ideally as links to separate pages (or
 pop-ups or a live sidebar?) that explain what they mean, and why you'd
 want them.
 
 -k

I agree that it is important to highlight the features that are characteristic
of the language. However, I would add that statically typed is a turn-off for
some people, so I think it is important to add with type inference.


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-18 Thread Vo Minh Thu
2010/10/18 DavidA polyom...@f2s.com:
 Ketil Malde ketil at malde.org writes:


 Don Stewart dons at galois.com writes:

  Good start, if only the advanced were replaced with something more
  characteristic, like lazy, or statically typed. Which, BTW, both do 
  not

  lazy and statically typed don't mean much to other people. They are
  buzz words that mean nothing to many people.

 But they /are/ defining characteristics of the language, still.  I think
 they should be mentioned, ideally as links to separate pages (or
 pop-ups or a live sidebar?) that explain what they mean, and why you'd
 want them.

 -k

 I agree that it is important to highlight the features that are characteristic
 of the language. However, I would add that statically typed is a turn-off 
 for
 some people, so I think it is important to add with type inference.

Every once in a while, a discussion about the top-level text on
Haskell.org pops in this list. Without paying much attention to this
thread, and without digging the older threads, it occurs to me that
different people have very different opinion on this subject. I think
this is not a problem at all, because of the following thought:

When someone is interested enough in a programming language to land on
its homepage (i.e. haskell.org here), that someone has enough
resources at her disposal to make a somewhat informed choice, and
those resources can't be only a top-level text on the homepage.

This means if there are a few obscure words, they can digg their
meaning on their own (which is quite simple: there is a search bar on
the haskell.org site, some of those words are links, they are probably
viewing the site through a browser that makes it easy to search
through google or another search engine).

I have learned a few language and I simply can't remember a single
occurence where I had some interest in a language and simply decided
to learn it or not based on the top level text of its community
homepage.

All this means a great things: if you find Haskell or learning it
valuable, you can blog about it, give your personal spin to it. People
interested in Haskell will find your opinion and make a more richly
informed choice.

Cheers,
Thu
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-18 Thread Henning Thielemann
Vo Minh Thu schrieb:

 Every once in a while, a discussion about the top-level text on
 Haskell.org pops in this list. Without paying much attention to this
 thread, and without digging the older threads, it occurs to me that
 different people have very different opinion on this subject. I think
 this is not a problem at all, because of the following thought:
 
 When someone is interested enough in a programming language to land on
 its homepage (i.e. haskell.org here), that someone has enough
 resources at her disposal to make a somewhat informed choice, and
 those resources can't be only a top-level text on the homepage.

When thinking about What would I like to see when judging a programming
language?, I found that I most like a gallery of small example programs.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-17 Thread Stefan Monnier
 Good start, if only the advanced were replaced with something more
 characteristic, like lazy, or statically typed. Which, BTW, both do not
 appear in the whole blurb, even though they are *the* characteristics of
 Haskell, lazyness being even something that sets it apart from most other
 languages.

AFAIK laziness is a property of the major implementations of Haskell,
but not really of the language itself.  All I see in the Haskell report
points at it being applicative, call by name, but nowhere does the
report seem to mandate a lazy strategy.  It's just that being purely
functional implies that the compiler is free to use laziness.


Stefan

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-17 Thread Jeremy Shaw
On Sun, Oct 17, 2010 at 1:32 PM, Stefan Monnier
monn...@iro.umontreal.ca wrote:

 AFAIK laziness is a property of the major implementations of Haskell,
 but not really of the language itself.  All I see in the Haskell report
 points at it being applicative, call by name, but nowhere does the
 report seem to mandate a lazy strategy.  It's just that being purely
 functional implies that the compiler is free to use laziness.

Yes. The rumor I heard is that Haskell is non-strict:

http://www.haskell.org/haskellwiki/Lazy_vs._non-strict

- jeremy
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-16 Thread Ben Franksen
Don Stewart wrote:
 ben.franksen:
  Haskell is an advanced purely functional programming language.
  
  Good start, if only the advanced were replaced with something more
  characteristic, like lazy, or statically typed. Which, BTW, both
  do not
 
 lazy and statically typed don't mean much to other people. They are
 buzz words that mean nothing to many people.

I imagine a list of 'bullet points' following the blurb, listing the main
features with a small explanation and a link to further details.

  appear in the whole blurb, even though they are *the*
  characteristics of Haskell, lazyness being even something that sets
  it apart from most other languages. I hear the marketeers crying
  but the average visitor has no idea what lazyness means. So what?
  Give them a link to the wiki with an explanation. So, a better
  introductory sentence would be
  
  - Haskell is a lazily evaluated, purely functional programming
  language with a very flexible and powerful static type system.
 
 What are the benefits of laziness?

It is difficult to explain lazy evaluation and why it helps to make programs
more concise in one sentence. But it still is *the* most distinguishing
feature.

And let us be honest: it has benefits and it also has disadvantages. The
most prominent disadvantage being that it makes reasoning about runtime
behaviour, i.e. performance, much more difficult.

  Next sentence:
  
  An open source product of more than twenty years of cutting edge
  research, it allows rapid development of robust, concise, correct
  software.
 
 It is open source, and was born open source. It is the product of
 research.

How can a language be open source, or rather, how can it *not* be open
source? The point of a (programming) language is that it has a published
('open') definition. Nothing prevents anyone from creating a proprietary
compiler or interpreter for Haskell, AFAIK.

I do not dispute that Haskell is a reasult of research and I agree that this
should be stated. It is still not a 'product'. Have you ever heard someone
characterising TCP/IP as a 'product'? Or HTML? Or even C? The
term 'product', as it is used in the blurb, implies or at least suggests
some specific implementation, not a written and published standard.

  This really gets me every time I read it. How can anyone write such
  a nonsense? Haskell is not an open source product! It is no
  product at all. That most (maybe all) implementations are opens
  source is certainly an interesting fact, but IMO not something that
  should appear at the top of the page right under the header The
  Haskell Programming Language. The second and third sentences
  deliberately conflate language and implementation(s). This is a well
  known falacy and I am ashamed that it
 
 As Python, Ruby, C and every other language do.

Exactly my point. They all have only one relevant implementation. And in
practice this implementation has a great tendency to be taken as the
*definition* of the language, at least w.r.t. its semantics.

Do I really have to explain why this is bad and why specification of a
language should be clearly separate from its implementation? (Hint: how can
you ever hope to prove something about a piece of code if all the semantics
you have is whatever the implementation does?)

I *love* it that there *do* exist other implementations for Haskell, and I
dearly hope UHC, JHC etc will soon get to the point where they can be used
and recommended for practical programming.

  That cutting edge research is done for Haskell as well as for its
  implementations is of course good to know, but just stating it is
  not nearly enough: such a statement must be corroberated with
  evidence, otherwise it is just idle marketing. (Not that there
  wouldn't be evidence amass, it's just that none is given.)
 
 You literally want evidence that research played a part in Haskell, in
 its opening statement? Why??

I reject this objection. I let myself get carried away here. Still I think
that further down some links can be given to papers about Haskell and its
implementation.

  On we go:
  
  With strong support for integration with other languages, built-in
  concurrency and parallelism, debuggers, profilers, rich libraries
  and an active community, Haskell makes it easier to produce
  flexible, maintainable high-quality software.
  
  Let us take that apart:
  
  (1) Fact: Haskell has a good and very easy to use FFI. To the C
  language. I have never heard of integration with any other langauge
  being directly supported.
 
 It is OK to contest these, but consider the FFI of our competition:
 Python, Ruby, Erlang. Woeful FFIs. You are not at risk using Haskell, as
 you can always call out to your favorite $language library.

You misunderstand: I *love* Haskells FFI. It is the best I have ever 

[Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-16 Thread Ben Franksen
Donn Cave wrote:
 Quoth Ben Franksen ben.frank...@online.de,
 Enough. I think I have made my point.
 
 Yes, though possibly a little overstated it.  While it's easy to share
 your distaste for the blurb, if you take a generous attitude towards it,
 most of it is true enough.

Sorry. I was not in a generous mood, when I wrote this yesterday night. I am
more so now, and I agree that I have overstated soem points. It was not my
intention to attack the people who wrote the blurb, though it may have
sounded like I did. Again, sorry for that.

I agree with the most of it is true enough. Certainly, but that is not my
problem with it.

My problem with it is how it is expressed and that it misses out on
important characteristics.

 The implementation specific features are at least widely available to
 anyone who wants to use the language on the most popular computing
 platforms, so it's expedient, if a little cheesy, to say that Haskell
 supports those features.

I hate this sort of expediency. And it doesn't become the front page of a
language that excells in being principled. Haskell did *not* give in to
expedience when it came to IO and side effects. And what would we have now
it it had done so? Something far inferior and less interesting, I am sure.

That said, I have no problem with mentioning the excellent properties of
existing implementations, even in the first (or maybe second) paragraph.
But I want the text to be explicit and honest about this.

 We agree about strong support for integration with other languages,
 but I wouldn't like to say strong support for integration with C,
 either.  The FFI is mostly independent of C, per se - outside of the
 hsc macros, it just addresses a sort of platform standard for exposed
 library functionality, which happens to be commonly implemented in C.
 Someone might be able to think of a better way to put that.

Yes, this is difficult to state w/o going into details. Maybe talk
about 'binding to system libraries' or something like that.

 The point I liked best is the one you started with:
 
 This blurb should, IMO, give a concise description of what Haskell, the
 programming language, is, what makes it different from other languages,
 and why I should be interested in it.
 
 ... and, we understand, you don't find that in this blurb.  Lazy and
 statically typed may not be universally understood, but they aren't
 buzz words.  Whether that's the right way to shed some light on what
 Haskell is like, it sure says a lot more on a technical level than
 advanced purely functional programming language.  And while that
 phrase is linked to a longer exposition of Functional programming,
 the latter is set in language-independent terms and is at best ambiguous
 about whether it's talking about Haskell or not.

Yes, we have to be careful what we directly link to from the front page, and
especially from the blurb. These documents are almost as important as the
blurb itself.

They should concisely explain the main features for someone unfamiliar with
them, maybe contain some small examples. They definitely should be about
Haskell, not something more general, and also not something more specific,
like ghc, except if explicitly stated.

 I'm trying to picture someone who might find Haskell useful, but would
 be spooked by description of the language in unfamiliar technical
 terms.  Forget Python, this is a little different proposition.  A couple
 days ago I was talking to a friend about Haskell, turned out he hadn't
 heard of it.  I suppose he may have found this blurb.  I hope he
 found the blurb that appears at the top of the Introduction page:
 
  Haskell is a computer programming language. In particular, it is a
   polymorphically statically typed, lazy, purely functional language,
   quite different from most other programming languages. The language
   is named for Haskell Brooks Curry, whose work in mathematical logic
   serves as a foundation for functional languages. Haskell is based
   on the lambda calculus, hence the lambda we use as a logo.
 
 This most succinctly expresses the points I tried to convey to him
 about Haskell, and I don't think it would be out of place on the
 main page.

Much better. Though I *do* think mentioning the main implementations and
their qualities is a good thing to o, right after this:

Haskell can be interpreted or compiled. It has high quality, mature
implementations [link to a list of implementations], including optimizing
compilers, interactive interpreters, profilers and tools for debugging, and
a large and rapidly growing body of libraries [link to hackage]. The most
important Haskell implementation, ghc [like to ghc page], has served as a
test bed for practical application of cutting egde research into the
language as well as its compilation to efficiently executable code.

The text should go on and mention concurrency, parallelism, ffi, and
whatnot.

Cheers
Ben

___
Haskell-Cafe mailing list

[Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-16 Thread Ben Franksen
Christopher Done wrote:
 On 16 October 2010 05:52, Ben Franksen ben.frank...@online.de wrote:
 what marketing idiot has written this inclonclusive mumble-jumble of
 buzz-words?
 [...]
 How can anyone write such a
 nonsense? Haskell is not an open source product!
 [...]
 I am ashamed that it appears on the front page of my favourite
 programming language.
 [...]
 But no, I forgot, we don't want to explain anything or even be
 logical, dear reader, we want to pound slogans into your head!
 
 Stand back everyone, Bill Hicks is back and he's got an axe to grind,
 and it looks rusty!

I am sorry about the wording of these sentences, especially teh first one. I
let myself get carried away.

I stand by the critique, though. The blurb mixes up too many things that
should be clearly separated.

 On 16 October 2010 07:49, Donn Cave d...@avvanta.com wrote:
  Haskell is a computer programming language. In particular, it is a
 polymorphically statically typed, lazy, purely functional language,
 quite different from most other programming languages. The language
 is named for Haskell Brooks Curry, whose work in mathematical logic
 serves as a foundation for functional languages. Haskell is based
 on the lambda calculus, hence the lambda we use as a logo.

 This most succinctly expresses the points I tried to convey to him
 about Haskell, and I don't think it would be out of place on the
 main page.
 
 This description is similar to Wikipedia's description of the Joy
 language, with samples from the blurb above spliced in:
 
 The Joy programming language is a purely functional programming
 language[, quite different from other programming languages.] It
 was produced by Manfred von Thun of La Trobe University in
 Melbourne, Australia. Joy is based on composition of functions
 rather than lambda calculus[, hence the composition operator
 we use as a logo.]
 
 These descriptions are fine, but they don't note how Haskell really is
 any different from other languages, like Joy.

It states very clearly how Haskell is very different from Java, C, C++,
Perl, Python, Ruby, etc.

Distinguishing it from exotic languages like Joy is important but can be
done in a later paragraph.

 It doesn't include the
 fact that Haskell is a very serious language: it has a comprehensive
 and stable implementation, growing community, growing and already
 large library set, is being used seriously in industry, is the focus
 of cutting edge parallelism and concurrency research, has many yearly
 conferences, hackathons, etc. The original blurb does mention these
 things.

All these things should be mentioned, but not before we say what Haskell
actually *is*.

 On 16 October 2010 09:09, Colin Paul Adams co...@colina.demon.co.uk
 wrote:
 And purely functional programming language?

 If they mean anything to many people, it's that the language works
 (i.e. functions). What language wouldn't work?

 I think Ben has a strong point here.
 
 To solve this ambiguity that phrase is a link that people can click to
 find out what it means. Object oriented, dynamically typed,
 stack-based are about as meaningful.

The difference may be that everyone thinks he knows what 'object oriented'
means. But 'lazyness', 'polymorphic type system', what the heck is that?

I just think there is nothing we can do about that. These concepts are not
as well known as others. We can link to an explanation and we should, but
let's face it, if someone come to Haskell and expects to see only stuff he
already knows about he will be disappointed, no matter how well we hide
these things on the front page.

Cheers
Ben

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-16 Thread Ben Franksen
Ben Franksen wrote:
  That cutting edge research is done for Haskell as well as for its
  implementations is of course good to know, but just stating it is
  not nearly enough: such a statement must be corroberated with
  evidence, otherwise it is just idle marketing. (Not that there
  wouldn't be evidence amass, it's just that none is given.)
 
 You literally want evidence that research played a part in Haskell, in
 its opening statement? Why??
 
 I reject this objection. 

Oops, translation error. I wanted to say: I withdraw this objection.

Cheers
Ben

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-16 Thread wren ng thornton

On 10/16/10 10:48 AM, Ben Franksen wrote:

Don Stewart wrote:

It is open source, and was born open source. It is the product of
research.


How can a language be open source, or rather, how can it *not* be open
source? The point of a (programming) language is that it has a published
('open') definition. Nothing prevents anyone from creating a proprietary
compiler or interpreter for Haskell, AFAIK.


Miranda[TM] is/was a proprietary language, quite definitively so. If 
nothing else, this should be apparent by the fact that every reference 
to it in research papers of the era (a) included the TM sigil, and (b) 
had footnotes indicating who the IP holders are. That was before my 
time, but I was under the impression that Haskell was open from the 
beginning ---by express intention--- in order to enable work on lazy 
functional languages without being encumbered by Miranda[TM]'s closed 
nature.


For that matter, until rather recently Java was very much a closed 
language defined by the runtime system provided by Sun Microsystems and 
not defined by the sequence of characters accepted by that system, nor 
by the behavior of the system when it accepts them. Sun even went 
through some trouble to try to shut out competitive development of 
runtime systems such as SoyLatte, IcedTea, and the like.


Even the venerable C language has a long history of companies making 
proprietary extensions to the language in order to require you to buy 
their compiler, and they would most certainly pursue legal action if 
someone else copied the features. This is why GCC is as big a coup for 
the free/open-source movement as Linux is--- long before GCC changed its 
name and focus to being a compiler collection.


The languages which are open-source are in close correspondence with the 
languages which have a free/open-source implementation. There are a lot 
of them, including the vast majority of recent languages. But don't be 
seduced into thinking that a language is a predicate on acceptable 
strings, a transducer from those strings into computer behaviors, or 
that such predicates and transducers are public domain.


--
Live well,
~wren
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-16 Thread wren ng thornton

On 10/16/10 11:34 AM, Ben Franksen wrote:

Christopher Done wrote:

To solve this ambiguity that phrase is a link that people can click to
find out what it means. Object oriented, dynamically typed,
stack-based are about as meaningful.


The difference may be that everyone thinks he knows what 'object oriented'
means. But 'lazyness', 'polymorphic type system', what the heck is that?


Now it's time for my axe grinding (though, tis a wee little axe):

If polymorphism is mentioned anywhere in the intro, then it should be 
phrased as parametric polymorphism (perhaps with a footnote mention of 
GADTs). Unfortunately the term polymorphism has been co-opted by the 
OOP community to mean subtyping and overloading, so there will be many 
people who think they know what it means but will be wrong, because 
those are entirely different beasts than the kind of polymorphism 
Haskell supports. Using the more specific parametric polymorphism 
should at least give them pause before misinterpreting it.


--
Live well,
~wren
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: A rant against the blurb on the Haskell front page

2010-10-16 Thread wren ng thornton

On 10/16/10 11:22 AM, Ben Franksen wrote:

Much better. Though I *do* think mentioning the main implementations and
their qualities is a good thing to o, right after this:

[...]The most
important Haskell implementation, ghc [like to ghc page], has served as a
test bed for practical application of cutting egde research into the
language as well as its compilation to efficiently executable code.


Objection to calling GHC the most important. The most mature, most 
fully featured, most common, or even the standard implementation,, sure. 
But saying GHC is more important than the rest implies that (among 
others) the work on JHC and UHC is unimportant. To the contrary, I 
think JHC and UHC are, perhaps, more important than GHC precisely 
because they are treading new waters that the standard implementation 
cannot afford to explore.


--
Live well,
~wren
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe