[Haskell-cafe] New type of ($) operator in GHC 8.0 is problematic

Joachim Durchholz jo at durchholz.org
Tue Feb 9 14:43:00 UTC 2016


Am 09.02.2016 um 14:20 schrieb Rustom Mody:
> And one of the big
> regresses is the illusion that a *single *language that spans the spectrum
> from beginner learning to serious software engineering is a neat idea: a
> grand unified/universal language.

It is still an ideal.
Not because it is such a good idea. I'm pretty much unconvinced whether 
that is the case or not.
It is an ideal to approximatet because learning a new language, and 
learning it well enough to use it in anger, is such a huge investment in 
time and effort, and we simply cannot afford to build a language for 
each domain. Also, we cannot do so because there isn't even a consensus 
what the domains should be, and I'd expect such a list to be a moving 
target anyway.

 > Such a language already exists -- C++.
> An earlier generation called it PL-1.

No no no.
C++ was never meant to be easy to learn. It was intended to be easy to 
learn for C programmers, but C wasn't intended to be easy to learn, it 
was intended to be efficient on PDP-series computers with a 
non-optimizing compiler.
PL-1 wasn't intended to be easy to learn either - it was hoped it would 
be, but the primary goal was to include as many language features as 
humanly possible, in the hopes of creating something powerful.
So the two languages and the universal-easy-to-learn camp do not share 
any design goals.

> FP in ACM Curriculum 2013
> <http://blog.languager.org/2015/06/functional-programming-moving-target.html>
> spells out this – omnibus language – and such fallacies in more detail.

He claims this, but he does not back that up with any arguments.
There's only reference to authority (Peter Naur).

> And as regards prior art regarding the benefits for multiple close but
> different languages for teaching, one could see the multiple teachpacks
> <http://docs.racket-lang.org/teachpack/index.html?q=> of Scheme/Racket
> And even closer to home, helium
> <http://www.open.ou.nl/bhr/heeren-helium.pdf> is a haskell expressly
> designed to make teaching easier by not over-generalizing types

I think the link you gave is making a subtly but fundamentally different 
point: That to teach programming, you need a different and simplified 
language to get the core points across. There are actually good points 
to be made in favor of that approach.

However, this is about making Haskell the working language easy to 
learn. The demography includes people who know what a type system is, 
what a function is, and they will usually even know what a side effect 
is and already avoid that if they can.
Tell them that they see a simplified prelude and they will want to see 
the real one. Show them the real one and they will run away, flailing 
and scream, just as ten years ago, you could achieve the same effect by 
mentioning monads.

If the type system is starting to make it hard to learn the language 
well enough to use it professionally, or to even understand what the 
professional library writers did and why, then the type system has 
become too difficult.


More information about the Haskell-Cafe mailing list