[Haskell-cafe] What is your favourite Haskell "aha" moment?
Tony Morris
tonymorris at gmail.com
Thu Jul 12 23:40:51 UTC 2018
On python, we are fixing it (WIP):
https://github.com/qfpl/hpython
Did you see the recent "default mutable arguments" post?
https://lethain.com/digg-v4/
Here is a Haskell program that transforms any python program that uses
default mutable arguments:
https://github.com/qfpl/hpython/blob/master/example/FixMutableDefaultArguments.hs
Someone once said that python will never have tail call optimisation.
Here is the Haskell program that transforms any Python (direct only)
tail call into a loop:
https://github.com/qfpl/hpython/blob/master/example/OptimizeTailRecursion.hs
Two python programmers once argued over preferred indentation levels.
Let's put their disagreement into a Haskell function so that they can
stop arguing:
https://github.com/qfpl/hpython/blob/master/example/Indentation.hs
On 07/12/2018 07:58 PM, Brett Gilio wrote:
> 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.
> _______________________________________________
> 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 --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180713/d6388559/attachment.sig>
More information about the Haskell-Cafe
mailing list