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

Brett Gilio brettg at posteo.net
Thu Jul 12 09:58:13 UTC 2018


Python is poison, indeed. ;)

Brett Gilio
brettg at posteo.net | bmg at member.fsf.org
Free Software -- Free Society!

On 07/12/2018 04:56 AM, Graham Klyne wrote:
> Although I don't program regularly in Haskell these days (my poison is 
> Python, mainly for Web framework support), I do occasionally find myself 
> coding tricky manipulations in Haskell first as I find it easier to 
> concentrate on the essentials of an algorithm.  Once I have the Haskell 
> code written and tested, I generally find it fairly easy to map the 
> algorithm into Python (using higher order functions as appropriate).
> 
> Here are some examples:
> 
> https://github.com/gklyne/annalist/blob/master/spike/rearrange-list/move_up.lhs 
> 
> https://github.com/gklyne/annalist/blob/master/spike/tree-scan/tree_scan.lhs 
> 
> 
> And the corresponding code in the actual application:
> 
> https://github.com/gklyne/annalist/blob/4d21250a3457c72d4f6525e5a4fac40d4c0ca1c8/src/annalist_root/annalist/views/entityedit.py#L2489 
> 
> 
> https://github.com/gklyne/annalist/blob/master/src/annalist_root/annalist/models/entity.py#L245 
> 
> 
> #g
> -- 
> 
> 
> On 11/07/2018 13: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.
>>
> _______________________________________________
> 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.


More information about the Haskell-Cafe mailing list