Hacker News new | past | comments | ask | show | jobs | submit login

What kind of difficulties did you encounter when you tried Haskell?



Ultimately, I never reached the point where I could build anything much beyond toy programs. Haskell is a beautiful language full of great ideas, and I certainly learned a huge amount from wrestling with it, but eventually I decided that I wasn't really progressing as I wanted, and most importantly I was getting frustrated rather than having fun (e.g. constantly fighting against the type system and the cryptic error messages it produces).

I don't have a CompSci background, which may have made things more difficult, but I know Haskellites who are computer scientists, and have stronger mathematical backgrounds than I have, and many of those guys told me it took months of effort and several attempts before they were truly comfortable with the language.

In contrast, Racket feels like it's on my side, like it will help me to grow as a programmer rather than forcing me to grow on my own. I was able to start writing useful (but simple) stuff almost immediately, but at the same time there's plenty of scope to learn more sophisticated techniques and approaches later on. There's even a typed Racket dialect (http://docs.racket-lang.org/ts-guide/index.html)!

I may look at Haskell again in the future, but at the moment I'm very happy with Racket.


The phrase "fighting against the type system" usually indicates some misconceptions about the language -- the approach is to program with the type system as a tool to help you get the right code written, sooner. Approach it more as a thorough personal assistant, than a mean boss.


The learning curve of Haskell can indeed be daunting.

It took me about 4-5 months to get comfortable with Haskell, and a couple of years to make it the language I'm most comfortable in.

GHC type errors can also be very frustrating.

But I agree with dons that unless you're doing very advanced "type hackery" at the edges of what it can do, you really aren't "fighting the type system", just fighting the difficult error messages.

I do find that months of investment into a crucial tool such as a programming language is worth it for anyone who careers in programming.

I can testify that with time, the amount of type errors becomes much smaller, and that you start to smell GHC error messages a mile away :) That is, when seeing an error message, the cause is usually immediately clear simply by having been trained to see that same error message many times.

When I do rarely happen to struggle with a type error, it is a real bug, whose debugging in many cases would have been more frustrating in run-time.


The learning curve of Haskell can indeed be daunting.

It took me about 4-5 months to get comfortable with Haskell, and a couple of years to make it the language I'm most comfortable in.

I can see your point and I know that lots of people are doing great things with Haskell, but I simply made the assessment that for me, right now, I don't want to put in hundreds more hours of effort into learning Haskell, just to see if maybe I can finally get to the point of achieving enlightenment and maybe even build something useful one day.

That's why I'm so excited about discovering Racket; at first, I simply thought of it as a stop-gap on the road back to Haskell. But as I've learned more about it, I see that Racket has got so much to offer in its own right that I don't necessarily need to go back at all; I'm achieving enlightenment already!

I do find that months of investment into a crucial tool such as a programming language is worth it for anyone who careers in programming.

I agree; I'm going to put that effort into Racket. I'm a geneticist who codes a lot at work. Perl, R, shell and a bit of C remain my workhorse languages for this, but I've gradually developed an interest in programming more generally, and I'm already building more and more new stuff in Racket while taking a more rigorous approach to the design process.


Have fun with Racket! :-)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: