This is Cale Gibbard's Typepad Profile.
Join Typepad and start following Cale Gibbard's activity
Join Now!
Already a member? Sign In
Cale Gibbard
Recent Activity
If you're studying Haskell and are having trouble, please come to #haskell on irc.freenode.net and ask questions. Beginners are always welcome, and even if the question might seem silly, it's often easier than navigating the documentation on your own. (Yes, I'm telling you *not* to RTFM. :) It's not completely clear what you find confusing about the language from this post. You link to a part of the technical language specification regarding the semantics of case expressions which is admittedly not a good way for a beginner to learn what case expressions are about. (But might be useful to an implementor.) There are nicer places to learn about pattern matching and case expressions, anyway. If you need some, I could dig up some links. You also link to an explanation about how numeric constants are typeclass polymorphic. It's perhaps not the clearest explanation in the world, but you don't exactly say what you find difficult about it, so I'm not sure how to help. It might be good to know about typeclasses more properly in order to understand it, but it's not supposed to be *too* hard. It would be easier to help you with your sticking point if I knew better what the confusion was though. The same goes for the link to O'Caml documentation. I haven't programmed in O'Caml all that much, but I generally understood what was going on there. However, a simple link isn't enough to tell what you find difficult, so it's not really clear how to help. Anyway, I probably sound like a broken record, but please come online and ask some questions on IRC. I'm sure people will be happy to help. You could also send me e-mail, or join one or more of the mailing lists ( http://www.haskell.org/haskellwiki/Mailing_lists ), such as the Haskell Beginners' List ( http://haskell.org/mailman/listinfo/beginners ). But IRC is much more immediate and interactive, and it's usually easier for people to tailor their explanations to what you're finding hard. (Note: This link http://webchat.freenode.net/?channels=haskell would normally be a good way to get on, but we've had some problems with robots abusing the webchat lately, so you might have to get a proper IRC client if you get a message like "cannot send to channel".) It can indeed be quite daunting to learn a genuinely new language, particularly when you've been programming for a long time in a bunch of very similar programming languages (like I had before starting to learn Haskell about 9 years ago). The majority of languages used by mainstream programmers today are more similar than they are different, and to try one which is genuinely unlike any of the others and find out that you really can't just pick it up in a week or a month can be quite jarring. It's a bit like if you know, say, English, French and Spanish, perhaps learning Italian is not going to be so hard as learning Japanese. It's not that saying things is really any harder in Japanese, it's that the language is dissimilar from the languages that you know. (This isn't to say that Haskell for an imperative programmer is really comparable difficulty-wise to learning Japanese for an English speaker!) However, you'll probably find (as I and many others have) that your existing knowledge of how to program imperatively is at first a hindrance and that you'll have an easier time trying to pretend that you don't know how to program at all at first. Think about the learning curve in terms of your *first* programming language, and you might find you have a more comfortable time. Don't worry though, all the stuff you know about algorithms and how to structure programs will begin to translate over later, once you've rebuilt some of the foundations. Perhaps this is really unfortunate if all you want to do is to write a concurrent or parallel program and be done with it. However, I think you may find, as many do, that functional programming in general, and Haskell in particular, has a lot to offer to the rest of the problem of putting together reliable software effectively. Not only that, but it can be really fun at the same time. Anyway, my advice would be to keep at it, and find some knowledgeable mentors online or in real life. cheers! - Cale
1 reply