<div dir="ltr"><br><br><div class="gmail_quote">On Sun, Oct 19, 2008 at 11:39 PM, Chris Eidhof <span dir="ltr">&lt;<a href="mailto:chris@eidhof.nl">chris@eidhof.nl</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I think it might be more appropriate to move this discussion to haskell-cafe.<br>
<br>
On 19 okt 2008, at 17:24, Friedrich wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Learn to love types: &nbsp;one of the neat things about Haskell is that if<br>
you can write down the type of a function then you have usually done<br>
90% of the work of writing the code for it.<br>
</blockquote>
Well I disagree. But that&#39;s another story.<br>
</blockquote>
<br>
Well, it&#39;s definitely not true when you&#39;re starting out with Haskell. The thing is: once you start to think in types it does work like this. You just think: what do I need as my input and what&#39;s my output. That&#39;s what you write down as your type and you&#39;re almost done! It&#39;s very similar to test-driven development; the point with TDD is not so much about making sure your program is correct: the big win (for me) is that it helps you think about the design of your program. The same holds for types.</blockquote>
<div><br>Something I have noticed about myself now that I can think in types to some degree is that reading the documentation for apis in non-typeful languages, I&#39;ll pick on python, is now harder!&nbsp; I find myself wanting to know the type or class of types that the api will consume and produce.&nbsp; Knowing that in Haskell you can have that information even if the documentation hasn&#39;t been written spoils you :)<br>
<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Another is that in<br>
general, if you can&#39;t express the type of a function, it means you<br>
haven&#39;t thought through what you&#39;re trying to do.<br>
</blockquote>
<br>
No &nbsp;that&#39;s not true. The use implies that. However I&#39;m not advice<br>
resistant and will see if I use types. But IMHO that&#39;s should be job<br>
of the environment &nbsp;to figure out &nbsp;correctly and most of the time<br>
Haskell does &quot;guess&quot; right. And I surely can ask for the types.<br>
</blockquote>
<br>
I agree. However, sometimes, when things get really complex, you can&#39;t figure out a way to write down the code. That&#39;s when it can be handy to start out from the types and slowly work towards the definition.<br>
<br>
At first, you&#39;ll think that types are there to make your life harder. After a while, you&#39;ll start to love them and to be honest: I feel quite uncomfortable programming in an untyped language these days ;).</blockquote>
<div><br>My experience with learning haskell mirrors what is described here.&nbsp; At first I fought with the type system.&nbsp; Over time I noticed it was right more often than I was :)&nbsp; In time I learned to take its advice and eventually I learned to antcipate it.&nbsp; Haskell will warp your brain.<br>
<br>Hmm...this kool-aid sure is tastey,<br>Jason<br></div></div></div>