Burning bridges

amindfv at gmail.com amindfv at gmail.com
Thu May 23 03:46:34 CEST 2013



El May 22, 2013, a las 9:31 PM, Ivan Lazar Miljenovic <ivan.miljenovic at gmail.com> escribió:

> On 23 May 2013 11:24,  <amindfv at gmail.com> wrote:
>> El May 22, 2013, a las 9:06 PM, Casey McCann <cam at uptoisomorphism.net> escribió:
>> 
>>> On Wed, May 22, 2013 at 8:39 PM, Ivan Lazar Miljenovic
>>> <ivan.miljenovic at gmail.com> wrote:
>>>> 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...
>>> 
>>> So in other words, your contention is that the design of the core
>>> library of Haskell should be driven by the needs of an introductory
>>> programming course, which is not even attempting to teach Haskell
>>> specifically, aimed at students who can't even figure out how tab
>>> characters work? That's marvelous.
>>> 
>>> - C.
>> 
>> I'd phrase it more nicely than that, but I agree with the point that you could still teach the course with haskell.
>> 
>> Specifically, it seems like not much of a jump in abstraction to go from
>> 
>> [Int] to
>> [a] to
>> List a to
>> (Traversable f) => f a to
>> (Functor f) => f a
> 
> I think it _is_ more of a jump... at least if we want them to
> eventually consider Traversable, Functor, etc. in the abstract sense
> and avoiding a "Traversable is like a <something>" tutorials; whilst
> it might be possible to give people learning Haskell to give them the
> intuition that a Functor is a container, how then do you make the jump
> to ((->) a) ?

I really can't speak from experience as a professor, but it seems "Foldables are things that you can apply 'fold' to; Traversables are things you can traverse" would be much less scary than "monad" and "instance Functor ((->) e)"

This could actually be a less rocky transition into typeclasses than Functor and friends...

Tom


More information about the Libraries mailing list