[Haskell-cafe] Foldable for (,)

Richard A. O'Keefe ok at cs.otago.ac.nz
Wed May 3 22:58:30 UTC 2017

What we have here is a feature interaction problem.
There's a combination of features (Foldable, Traversable, ((,) a), &c)
each of which is sensible and useful, but which together give people a
nasty surprise.

We also have the combination of a language which is getting a lot of
attention in terms of expressiveness, mathematical power, consistency
and all manner of goodness BUT less attention with respect to beginners
and bears of very little brain like me.

If I write something that evaluates to length (2,3), it will
quite definitely be unintentional.  I'm reminded of a feature
that Emacs used to have (and maybe still does): there were lots
of commands that beginners were much more likely to type by
accident than on purpose, so when you typed on, it would tell
you something like "you just typed Ctrl-Meta-Explode, which does
XYZ, are you sure you meant to do that?" and if you said yes, it
remembered that and would let you use it again.  That's one way
to try to combine power for experts with safety for beginners.
Again, if I remember correctly, PLT Scheme (now Racket) had
similar support for beginners, where you could choose different
language levels so that beginners didn't have to worry about
major or even minor arcana.

What I'm wondering here is if there's room in the Haskell world for
something similar?  Perhaps some sort of Profile: <profile name>
pragma, where profiles can say things like "tuples are not Foldable".

Does everyone have "beginner" days, or is it just me?

More information about the Haskell-Cafe mailing list