Hi Julz,

I'm currently taking a functional programming class in uni (5 weeks now), and haskell is the main language we use. It is indeed a big step from imperative programming, but I must say I absolutely love haskell. Our first assignment was to write a functional query language (think SQL). I wrote a table print function, select, project, join function (and some helper functions) in about 100 lines of code. Amazing isn't it? If you write a function and it gets past the compiler, 99% of the time it will just work the first time.

The expressiveness is great, but it means there is much more information on a single line of code. So if you read code at the speed you read C-Script, you won't understand it. That's one thing you have to get used to, but more important is the lack of state. There are no assignments, no side effects in normal haskell functions. This takes some getting used to. You can't have a loop counter.

Adoption of functional programming in the software industry has been slow, but I think this is mainly due to a lack of functional programmers. FP certainly has some real world advantages >for some applications<. For example, because of the lack of state, you simply can't make some bugs. You can't possibly follow a null pointer or something like that. Another important advantage that will become more important in the future is concurent programming. Haskell has some very simple, non-intrusive "hints" that allow the compiler to automatically paralellise your application. This is much harder in impertative langauges, because it is much harder to mathematically prove things about a program written in an imperative language, than a program written in a functional language.

So far, FP has mostly been used for academic applications. But you can use OpenGL, and I think there have been entire FPSs made with haskell.

To conclude, don't expect your programming knowledge of imperative languages to help you, and functional programming can be a lot of fun. Try to program in an imperative way and your in for a painfull ride..

Oh by the way, I think starting out with a functional language doesn't make much sense for a CS education. Are you studying mathematics or something like that?