I have used Haskell for teaching for years. Until recently, I taught the hierarchy using a semigroup model.
Functor <- Apply <- Applicative Apply <- Bind <- Monad https://github.com/NICTA/course/tree/ee8d1a294137c157c13740ac99a23a5dd5870b4a/src/Course I did this because it means curious students don't need to receive an explanation of the historical accidents of Haskell had I modelled it in accordance with Haskell pre-AMP. Doing so has caused confusion (I tried it, many years ago). Since AMP implementation, I have changed the hierarchy to be the same as Haskell proper, since the benefit has become worth doing. https://github.com/NICTA/course/issues/164 I am in favour of breaking changes as hard as you can, if it achieves a progressive benefit, even a small one, which this does. It also achieves an incidental benefit in the context of teaching. As it stands for industry use, I remove Prelude and model all this properly anyway. It is a significant effort, but way worth it e.g. do not require return to use do-notation. The penalty for having to do this is often under-estimated. "Breaking changes" is over-stated. Patience. I am waiting. On 05/10/15 19:30, Malcolm Wallace wrote: > On other social media forums, I am seeing educators who use Haskell as a > vehicle for their main work, but would not consider themselves Haskell > researchers, and certainly do not have the time to follow Haskell mailing > lists, who are beginning to say that these kinds of annoying breakages to the > language, affecting their research and teaching materials, are beginning to > disincline them to continue using Haskell. They are feeling like they would > be less well disposed to reviewing papers that use Haskell, and less well > disposed to collaborating on writing papers that involve Haskell. > > Please can the Haskell Prime Committee take into account the views of such > "peripheral" users of the language, who after all, form some measure of its > recent "success". Haskell is a real-world tool for many people, and breakage > of their code, and their sources of information about Haskell, is a powerful > disincentive to continue with it. > > Regards, > Malcolm > > >> On 5 Oct 2015, at 10:05, Malcolm Wallace wrote: >> >>> I am also a strong -1 on small changes that break huge numbers of things >>> for somewhat trivial benefits. >>> >>> Regards, >>> Malcolm >>> >>> On 2 Oct 2015, at 11:09, Henrik Nilsson wrote: >>> >>>> Hi all, >>>> >>>> I have discussed the monad of no return proposal with >>>> my colleague Graham Hutton: a long-standing member of >>>> the Haskell community, well-known researcher, some 20 >>>> years of experience of teaching Haskell to >>>> undergraduate students, and author of one of the most >>>> successful introductory Haskell textbooks there are. >>>> >>>> The upshot of this e-mail is a strong collective -2 >>>> from us both on particular proposal, and a general call >>>> for much more caution when it comes to breaking changes >>>> that are not critically important. >>>> >>>> First, on a general note, there has recently been a >>>> flurry of breaking changes to the (de facto) Haskell >>>> standards. In many cases for very good reasons, but >>>> sometimes it seems more in a quest for perfection >>>> without due consideration for the consequences. It used >>>> to be the case that breaking changes were very rare >>>> indeed. And for good reason. >>>> >>>> Right now, the main "measure of breakage" in the >>>> on-line discussions seems to be how many packages that >>>> break in Hackage. Which of course makes sense: the >>>> Hackage repository is very important and such a measure >>>> is objective, as far as it goes. >>>> >>>> But we should not forget that breakage can go far >>>> beyond Hackage. For starters, there is *lots* of code >>>> that is not in Hackage, yet critically important to its >>>> users, however many or few they are. There are more >>>> than hundreds of thousands of copies of books out there >>>> where that may break in that examples may no longer >>>> work. And they cannot be changed. There are countless >>>> research papers that may break in the same way. Every >>>> single institution that use Haskell in their teaching >>>> may have to update their teaching materials (slides, >>>> code, lab instructions) for every module that teaches >>>> or uses Haskell. And last but not the least, what >>>> countless of programmers and students have learned >>>> about Haskell over decades, most of whom are *not* >>>> power users who can take these changes in their stride, >>>> may also break. >>>> >>>> Now, of course a language has to evolve, and sometimes >>>> breaking backwards compatibility is more or less >>>> essential for the long-term benefit of the language. >>>> But we should not let perfection be the enemy of the >>>> good. >>>> >>>> As to this particular proposal, the monad of no return, >>>> it does not seem essential to us, but mostly motivated >>>> by a quest for "perfection" as defined by a very >>>> knowledgeable but in relative terms small group of >>>> people. >>>> >>>> One argument put forward was that applicative code that >>>> uses "return" instead of "pure" should get a less >>>> constrained type. But such code is relatively new. The >>>> methods of the Monad class have been return and bind >>>> for some 25 years. So indeed, as Henning Thielemann >>>> wrote: why should not the newer code be adapted and use >>>> "pure" instead? In fact, the use of "pure" in such code >>>> could serve as a quite useful cue that the code is >>>> applicative rather than monadic, especially where >>>> applicative do is employed. >>>> >>>> Another reason put forward is support for the >>>> applicative do syntax. But that is, in standard terms, >>>> only a future possibility at this point. Further, the >>>> syntax is arguably rather dubious anyway as it, in >>>> particular to someone with an imperative background, >>>> suggests a sequential reading which is exactly what >>>> applicative is not and why it is useful. So from that >>>> perspective, using the applicative operators directly, >>>> without any syntactic sugar, actually amounts to a much >>>> more transparent and honest syntax, even if a bit more >>>> verbose in some cases. >>>> >>>> The bottom line is that it is premature to put forward >>>> support for the applicative do syntax as a rationale >>>> for a non-essential breaking change. >>>> >>>> Best regards, >>>> >>>> Henrik Nilsson and Graham Hutton >>>> >>>> -- >>>> Henrik Nilsson >>>> School of Computer Science >>>> The University of Nottingham >>>> n...@cs.nott.ac.uk >>> >> > > _______________________________________________ > Haskell-prime mailing list > Haskell-prime@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime > _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime