I discovered Haskell about a year and half ago, along with F#.

Beginning with both languages was relatively easy but I already had experience of FP in lisp and scheme.
And some years ago I took a course in FP (learning CAML which F# is closely based on).

My study of haskell went smooth up to the point I came across monads (that is, the honey moon did not last very long).

I must admit that it took me about 3 months of (intermittent) work to first understand monads and then to be able to use them correctly.

What also helped me a lot was the parallel study of both F# and Haskell.  Indeed, I often tried to understand how some constructs in Haskell could or could not be implemented in F# (i.e type classes).
I.e. that really helped me understand the higher order types in Haskell.

After the monad episode, I found myself quite interested in FRP and all its lot of new concepts (applicative functors, arrows, ...).
I tried to read as much as I could on the subject and finally decided that if I wanted to really understand all this, one of the best solution was trying to implement a small FRP myself. That's what I did in F#.
After a few weeks, I think I now understand arrows, application functors and other curiosities.

I think that working on more or less real problems (or on real applications) is definitively the best way to learn such languages. It is not a matter of writing thousands of lines of code but rather to pick up a specific aspect/feature of a language and  to apply it to a concrete example, just to understand what problem it is supposed to solve and how well it solves it.

Although I am not making a living on Haskell/F# (specially in my country), it gave me quite a lot of good idea in my day to day work both in terms of development techniques and in terms of analysis/specifications.

So learning Haskell was not the easiest thing I did in my life but so far, it does pay off.

J-C



On Wed, Mar 25, 2009 at 5:28 PM, Lanny Ripple <lanny@cisco.com> wrote:
Learning the syntax, a day or two.
Learning major idioms (many of which are encapsulated in modules),
ongoing (it's been about two years of off and on).

Sadly I can't use it for my $work language.  If I could then the
time available for learning haskell and paying the mortgage would
not be disjoint.  On the other hand I'm using what I'm learning at
work and it's making for better code.  (And scaring some of my
coworkers doing my code-reviews. :)

 -ljr

Jon Fairbairn wrote:
> "Tom.Amundsen" <tomamundsen@gmail.com> writes:
>
>> How long did it take you to become proficient in Haskell?
>
> Something more than twenty years.
>
>> By that, I mean - how long until you were just as
>> comfortable with Haskell as you were with your strongest
>> language at that time?
>
> Oh, Haskell was my strongest language during all that time! ;-)
>
> If I have a serious point, it's that going from writing
> imperative programmes to writing properly functional ones
> takes a lot longer than it takes to learn every facet of the
> language.
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe