[Haskell-cafe] What is your favourite Haskell "aha" moment?

Jake jake.waksbaum at gmail.com
Wed Jul 11 14:51:02 UTC 2018


I think using laziness for dynamic programming is a pretty amazing thing:
http://jelv.is/blog/Lazy-Dynamic-Programming/

On Wed, Jul 11, 2018 at 10:37 AM erik <eraker at gmail.com> wrote:

> For me there were two important "aha" moments. Right at the beginning I
> was drawn in by using ADTs and pattern-matching on them. It's so simple and
> plain and now it's the first thing I miss in any other language I have to
> work with. I feel like this would make a short, compelling example for
> programmers coming from any other background.
>
> The second was reading Wadler's "Monads for Functional Progamming" (and
> reading it a second and third time, if we're being honest). The ways in
> which he takes three seemingly disconnected examples and reduces them to
> this broader mathematical abstraction: I found it quite beautiful and
> surprising once I fully appreciated it.
>
>
> On Wed, Jul 11, 2018 at 7:29 AM Ionuț G. Stan <ionut.g.stan at gmail.com>
> wrote:
>
>> This is not necessarily related to Haskell, as I've had this A-HA moment
>> while watching the 1984 SIPC lectures from MIT.
>>
>> Anyway, at some point, Mr Sussman (or was it Mr Abelson?) used `+` as an
>> argument to another function. I was bedazzled!
>>
>> First of all, it was the syntactic novelty — `+` was not some rigid part
>> of the syntax, it was just a name — secondly, it was not any name, it
>> was the name of a *function*  that was sent to another function. It was
>> probably my first encounter with higher-order functions.
>>
>> If I remember correctly, the code was along the lines of:
>>
>> foldl (+) 0 [1,2,3]
>>
>>
>> On 11/07/2018 15:10, Simon Peyton Jones via Haskell-Cafe wrote:
>> > Friends
>> >
>> > In a few weeks I’m giving a talk to a bunch of genomics folk at the
>> > Sanger Institute <https://www.sanger.ac.uk/> about Haskell.   They do
>> > lots of programming, but they aren’t computer scientists.
>> >
>> > I can tell them plenty about Haskell, but I’m ill-equipped to answer
>> the
>> > main question in their minds: /why should I even care about Haskell/?
>> > I’m too much of a biased witness.
>> >
>> > So I thought I’d ask you for help.  War stories perhaps – how using
>> > Haskell worked (or didn’t) for you.  But rather than talk generalities,
>> > I’d love to illustrate with copious examples of beautiful code.
>> >
>> >   * Can you identify a few lines of Haskell that best characterise what
>> >     you think makes Haskell distinctively worth caring about?
>> >     Something that gave you an “aha” moment, or that feeling of joy when
>> >     you truly make sense of something for the first time.
>> >
>> > The challenge is, of course, that this audience will know no Haskell,
>> so
>> > muttering about Cartesian Closed Categories isn’t going to do it for
>> > them.  I need examples that I can present in 5 minutes, without needing
>> > a long setup.
>> >
>> > To take a very basic example, consider Quicksort using list
>> > comprehensions, compared with its equivalent in C.  It’s so short, so
>> > obviously right, whereas doing the right thing with in-place update in
>> C
>> > notoriously prone to fencepost errors etc.  But it also makes much less
>> > good use of memory, and is likely to run slower.  I think I can do that
>> > in 5 minutes.
>> >
>> > Another thing that I think comes over easily is the ability to
>> abstract:
>> > generalising sum and product to fold by abstracting out a functional
>> > argument; generalising at the type level by polymorphism, including
>> > polymorphism over higher-kinded type constructors.   Maybe 8 minutes.
>> >
>> > But you will have more and better ideas, and (crucially) ideas that are
>> > more credibly grounded in the day to day reality of writing programs
>> > that get work done.
>> >
>> > Pointers to your favourite blog posts would be another avenue.  (I love
>> > the Haskell Weekly News.)
>> >
>> > Finally, I know that some of you use Haskell specifically for genomics
>> > work, and maybe some of your insights would be particularly relevant
>> for
>> > the Sanger audience.
>> >
>> > Thank you!  Perhaps your responses on this thread (if any) may be
>> > helpful to more than just me.
>> >
>> > Simon
>> >
>> >
>> >
>> > _______________________________________________
>> > Haskell-Cafe mailing list
>> > To (un)subscribe, modify options or view archives go to:
>> > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> > Only members subscribed via the mailman list are allowed to post.
>> >
>>
>>
>> --
>> Ionuț G. Stan  |  http://igstan.ro  |  http://bucharestfp.ro
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
>
>
>
> --
> Erik Aker
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180711/6668766b/attachment.html>


More information about the Haskell-Cafe mailing list