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

Joachim Durchholz jo at durchholz.org
Wed Feb 10 17:30:28 UTC 2016

Am 10.02.2016 um 16:32 schrieb Bardur Arantsson:
> Incidentally Java had a similar issue with the whole
>      public class Foo {
>        public static void main(String[] args) {
>        }
>      }
> incantation being needed to teach beginners the first thing about Java.
> You know what I did -- I just said "yeah, just ignore that bit, I'll
> explain when you're ready" and it wasn't actually a problem in practice.
> Turns out people are quite at ignoring things they don't understand as
> long as you *tell them* to just ignore it until later.

Java's main() is a single thing that you simply copy&paste and can 
forget about while learning the language.
Haskell's extended type declarations will reappear whenever a student 
explores the library.
I.e. the Java issue is a single loose end. The Haskell issue keeps 
adding more loose ends as students progress.

I am not sure how relevant that is going to be in practice. Maybe it's 
possible to come up with a short "for now" explanation that is 
consistent with what students will experience; if that's possible, I'd 
expect that to be much preferrable over a simplified/lying Prelude.

One thing about a simplified Prelude: It will profoundly unnerve 
newbies. The feeling of shifting ground the first time they see that 
something is amiss will make them feel insecure, because they won't know 
how much of what they already learned will have to be thrown overboard. 
They won't know anymore how much they still have to learn, which is just 
as unnerving.
If a simplified Prelude is used as a teaching tool, then that should be 
done in a way that allows students to look beyond that barrier, so they 
know which of their knowledge is preliminary, and how much they will 
have to learn after it.

More information about the Haskell-Cafe mailing list