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

PY aquagnu at gmail.com
Wed Jul 11 13:58:20 UTC 2018


Vanessa, I added your blog to my bookmarks :)

Thanks


11.07.2018 16:46, Vanessa McHale wrote:
>
> I have several short examples that I quite like:
>
> #1: changes a probability density function into a cumulative density 
> function
>
> |
>
> cdf :: (Num a) => [a] -> [a] cdf = drop 2 . (scanl (+) 0) . ((:) 0)
>
> |
> #2: enumerate all strings on an alphabet (this uses laziness!)
> |
>
> allStrings :: [a] -> [[a]] allStrings = sequence <=< (inits . repeat)
>
> |
>
>
>   ||
>
> #3: enumerate the Fibonacci numbers (this one uses laziness too)
> |
>
> fibonacci :: (Integral a) => [a] fibonacci = 1 : 1 : zipWith (+) 
> fibonacci (tail fibonacci)
>
> |
> #4: Return all subsets of a list
> |
>
> allSubsets :: [a] -> [[a]] allSubsets = filterM (pure [True, False])
>
> |
>
> I also have two blog posts I wrote that contain lots of short 
> examples. The first contains lots of short-but-interesting programs 
> and the second contains examples of how expressive Haskell is (by 
> doing the same thing multiple times):
>
> http://blog.vmchale.com/article/haskell-aphorisms
> http://blog.vmchale.com/article/sum
>
> On 07/11/2018 07:10 AM, 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.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180711/1b6d5921/attachment.html>


More information about the Haskell-Cafe mailing list