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

Doaitse Swierstra doaitse at swierstra.net
Wed Jul 11 19:17:54 UTC 2018


[Shameless promotion]

I once wrote a parser combinator library. Something everyone does once in his life ;-}

Then I realised that I could run parsers in an interleaved way, and wrote the package uu-interleaved”. In remarkably few lines of code this can turn a parser combinator library in a a library that can run parsers in an interleavedway . If you look at the code in:

http://hackage.haskell.org/package/uu-interleaved-0.2.0.1/docs/src/Control.Applicative.Interleaved.html

this boils down to writing a few instances for a new data type. Although the code is intricate it is very short, and the types guided me get the code correct. Without te types I would have spent ages in getting things to work.

The I realised that by adding just a few extra lines of code this could be turned in a package for writing code for dealing with command line arguments in a very broad sense: repeating arguments, dealing with missing obligatory arguments, optional arguments and parsing the arguments according to what they stand for and reporting errors in the command line in a systematic way 

Surprisingly the  the code of this package is probably less that what an ordinary program spends on processing it's command line arguments, while providing much larger security.

 [End of shameless promotion]

If your audience consists of experienced programmers they must have been spending quite some time on code that is no longer necessary when using such a package.

 Doaitse







> Op 11 jul. 2018, om 14:10  heeft Simon Peyton Jones via Haskell-Cafe <haskell-cafe at haskell.org> het volgende geschreven:
> 
> 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 <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/2f8dfc83/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ParseYourOptions.pdf
Type: application/pdf
Size: 278476 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180711/2f8dfc83/attachment-0001.pdf>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180711/2f8dfc83/attachment-0003.html>


More information about the Haskell-Cafe mailing list