Burning bridges

Conrad Parker conrad at metadecks.org
Thu May 23 03:30:10 CEST 2013

On 23 May 2013 09:15, Carter Schonwald <carter.schonwald at gmail.com> wrote:
> I don't think so.  You could just tell GHC / ghci to do Haskell 2010/98 and
> have the old base.
> This change does not constitute retconning prior base/preludes, but rather a
> new base / prelude that the community wishes to use going forward.
> (If I'm wrong, someone please correct me)
> Point being, old standards for base / prelude will still exist. Use those if
> you can't adjust your teaching materials. Granted the students won't be able
> to use as many libraries immediately in such a course, but that's your
> choice to make.

Indeed. If you want to teach Haskell like it's 1998, use -package haskell98.

But seriously, if you want to teach Haskell without typeclasses, use Helium.

If you don't really care about Haskell (and Ivan's case doesn't) then
use Elm: it has no typeclasses, runs in-browser (no installation
requirements! cross-platform!) and has cool graphics libraries.


> On 23 May 2013 07:32, Malcolm Wallace <malcolm.wallace at me.com> wrote:
>> -20 for generalising the Prelude
>> +1 for removals from the Prelude
>> -1 for adding monomorphic stuff
>> +1000 for doing nothing
>> You are all nuts. :-)
> I don't know if I'd go quite _that_ for as Malcolm for the weightings
> for the different proposals...
> But I was speaking with a few other tutors of an introductory
> CS/programming course that uses Haskell (note: it's teaching
> programming with Haskell, not teaching Haskell per se: for example,
> all pattern matchings must be done with case statements as the
> lecturer considers top-level pattern matching a Haskell-specific
> quirk) about these proposals...
> We have plenty of students who have trouble understanding existing
> functions and types themselves; if we were to suddenly find map,
> filter, etc. with generalised type signatures then it would confuse
> the matter even further (especially as they've only "seen" the
> standard Eq, Ord and Show classes, and even then only in deriving
> statements and type signatures to be able to use ==, /=, etc. rather
> than knowing how to write an instance of them themselves).
> (Admittedly, they only see these list functions in roughly the last
> third of the course; even so, despite having just written their own
> map, filter, etc. functions first for Strings and then generalising
> them to work on any list in a tutorial a few weeks back, when it came
> time to work on their assignment when map and filter would come in
> handy some still kept writing the list traversals by hand due to
> unfamiliarity of these functions when compared to all the manual list
> traversal they'd already done.)
> If the types in the Prelude were generalised, it might be possible to
> have a custom Prelude used for the course; however, for this to be
> used we'd either have to:
> a) get them to use rote boilerplate of {-# LANGUAGE NoImplicitPrelude
> #-} (or `import Prelude()') and importing the custom one; this would
> still require ensuring that students had the custom prelude installed
> on their own laptops, etc.
> b) write wrappers around ghc and ghci to load up the custom prelude
> instead, though even if we managed to get this to work we'd still need
> to somehow make sure all students would install equivalent wrappers on
> their own machine... and considering how much luck we've had with
> making sure they configured their editors to have the tab key insert
> four spaces instead of a tab character, I can see that being painful.
> Either way, we'd then find ourselves teaching a "custom" version of
> Haskell, and I don't exactly have fond memories of when I was taught
> Java in my first year of uni using a custom wrapper/library (and since
> my only programming experience to date was Pascal/Delphi, I can't
> really blame Java :p)
> I do, however, think that the Prelude is over-crowded and that
> Data.List should contain most of the list-specific functions (and it
> is weird when there is so much overlap between the two).
> So my actual votes for the current status of this proposal are:
> -1 for generalising the Prelude
> +1 for removing stuff from the Prelude (then people can import
> Data.List, Data.Traversable, Data.Foldable, etc. as they see fit
> without clashes)
> -1 for adding monomorphic stuff
> -0.5 for doing nothing
>> Regards,
>>     Malcolm.
>> On 22/05/2013, at 22:16, Herbert Valerio Riedel <hvr at gnu.org> wrote:
>>> +1 Generalize Prelude
>>> -1 Remove from Prelude
>>> -1 Add more monomorphic stuff
>>> -1 Do nothing
>>> +1 More fun polls like this
>>> _______________________________________________
>>> Libraries mailing list
>>> Libraries at haskell.org
>>> http://www.haskell.org/mailman/listinfo/libraries
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://www.haskell.org/mailman/listinfo/libraries
> --
> Ivan Lazar Miljenovic
> Ivan.Miljenovic at gmail.com
> http://IvanMiljenovic.wordpress.com
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries

More information about the Libraries mailing list