<div dir="ltr">> Alexey, could you expand on what you mean in your first point?<div><br></div><div>I guess that I meant two things here.</div><div><br></div><div>First is that when I wrote a signature for my function, the compiler will make its best to help me implement it. It will yell at me, it will not let me use things that I am not supposed to use (according to constraints), etc. <br>More precise I am with my types (e.g. use non-empty list instead of just list, use specific ADT instead of Bools, use Age/Weight/Size instead of Int, etc.) - more help I get.</div><div><br></div><div>Another thing is that sometimes I'd just play "Type Tetris" to make things compile and work. Try something, the compiler says "No, can't have this", perhaps make a suggestion, try another thing, "aha, next step", etc. Learned so much from these "games" :)</div><div><br></div><div>Regards, </div><div>Alexey.</div><div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 12, 2018 at 11:04 PM Brett Gilio <<a href="mailto:brettg@posteo.net">brettg@posteo.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Alexey, could you expand on what you mean in your first point? I am <br>
quite intrigued. I do not use Haskell often, but that could be something <br>
of interest to me in-and-out of Haskell.<br>
<br>
Brett Gilio<br>
<a href="mailto:brettg@posteo.net" target="_blank">brettg@posteo.net</a> | <a href="mailto:bmg@member.fsf.org" target="_blank">bmg@member.fsf.org</a><br>
Free Software -- Free Society!<br>
<br>
On 07/12/2018 07:46 AM, Alexey Raga wrote:<br>
> Not sure if it counts as "aha moments", but when I started with Haskell <br>
> I had two major reasons (not in any importance order):<br>
> <br>
> 1. The ability to define the specification (types) and then "just" <br>
> follow them in implementation. Sometimes even without having a clear <br>
> understanding of the things I was using, I felt (and still feel) guided <br>
> towards the right solution.<br>
> <br>
> 2. The ability to refactor fearlessly is a _massive_ productivity boost. <br>
> Hard to underestimate.<br>
> <br>
> Regards,<br>
> Alexey.<br>
> <br>
> On Wed, Jul 11, 2018 at 10:10 PM Simon Peyton Jones via Haskell-Cafe <br>
> <<a href="mailto:haskell-cafe@haskell.org" target="_blank">haskell-cafe@haskell.org</a> <mailto:<a href="mailto:haskell-cafe@haskell.org" target="_blank">haskell-cafe@haskell.org</a>>> wrote:<br>
> <br>
>     Friends____<br>
> <br>
>     In a few weeks I’m giving a talk to a bunch of genomics folk at the<br>
>     Sanger Institute <<a href="https://www.sanger.ac.uk/" rel="noreferrer" target="_blank">https://www.sanger.ac.uk/</a>> about Haskell.   They<br>
>     do lots of programming, but they aren’t computer scientists.____<br>
> <br>
>     I can tell them plenty about Haskell, but I’m ill-equipped to answer<br>
>     the main question in their minds: /why should I even care about<br>
>     Haskell/?  I’m too much of a biased witness.<br>
> <br>
>     ____<br>
> <br>
>     So I thought I’d ask you for help.  War stories perhaps – how using<br>
>     Haskell worked (or didn’t) for you.  But rather than talk<br>
>     generalities, I’d love to illustrate with copious examples of<br>
>     beautiful code. ____<br>
> <br>
>       * Can you identify a few lines of Haskell that best characterise<br>
>         what you think makes Haskell distinctively worth caring about?  <br>
>         Something that gave you an “aha” moment, or that feeling of joy<br>
>         when you truly make sense of something for the first time.____<br>
> <br>
>     The challenge is, of course, that this audience will know no<br>
>     Haskell, so muttering about Cartesian Closed Categories isn’t going<br>
>     to do it for them.  I need examples that I can present in 5 minutes,<br>
>     without needing a long setup.____<br>
> <br>
>     To take a very basic example, consider Quicksort using list<br>
>     comprehensions, compared with its equivalent in C.  It’s so short,<br>
>     so obviously right, whereas doing the right thing with in-place<br>
>     update in C notoriously prone to fencepost errors etc.  But it also<br>
>     makes much less good use of memory, and is likely to run slower.  I<br>
>     think I can do that in 5 minutes.____<br>
> <br>
>     Another thing that I think comes over easily is the ability to<br>
>     abstract: generalising sum and product to fold by abstracting out a<br>
>     functional argument; generalising at the type level by polymorphism,<br>
>     including polymorphism over higher-kinded type constructors.   Maybe<br>
>     8 minutes.____<br>
> <br>
>     But you will have more and better ideas, and (crucially) ideas that<br>
>     are more credibly grounded in the day to day reality of writing<br>
>     programs that get work done.____<br>
> <br>
>     Pointers to your favourite blog posts would be another avenue.  (I<br>
>     love the Haskell Weekly News.)____<br>
> <br>
>     Finally, I know that some of you use Haskell specifically for<br>
>     genomics work, and maybe some of your insights would be particularly<br>
>     relevant for the Sanger audience.____<br>
> <br>
>     Thank you!  Perhaps your responses on this thread (if any) may be<br>
>     helpful to more than just me.____<br>
> <br>
>     Simon____<br>
> <br>
>     _______________________________________________<br>
>     Haskell-Cafe mailing list<br>
>     To (un)subscribe, modify options or view archives go to:<br>
>     <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
>     Only members subscribed via the mailman list are allowed to post.<br>
> <br>
> <br>
> <br>
> _______________________________________________<br>
> Haskell-Cafe mailing list<br>
> To (un)subscribe, modify options or view archives go to:<br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
> Only members subscribed via the mailman list are allowed to post.<br>
> <br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div></div></div>