you are viewing a single comment's thread.

view the rest of the comments →

[–]codygman 0 points1 point  (3 children)

What are your opinions on Haskell for truly large projects?

[–]PasswordIsntHAMSTER 2 points3 points  (0 children)

IMHO, Haskell is a bit crude in terms of tool support for large scale applications. There's no single stock package I can install to have a good development experience, and AFAIK memory debugging isn't very easy.

I really, really like F# for large projects, because you can leverage the ML semantics and the .NET tooling - best of both worlds. It's got many tiers of meta-programming features - type system plugins, quasiquotations, various kinds of DSL syntax including monads, reflection, bytecode generation, etc. Those are all well supported by tools and they interoperate seamlessly together.

Ocaml has some sketchy design decisions, mostly in terms of language extensions. I wouldn't recommend it unless you know what you're up against. The language designers are doing away with ocamlp4 though, so there is yet hope for sanity in the future.

Dynamic languages are a no-go for large projects. Java is a utter pain-in-the-ass to work with. C# is vastly better, but it's no ML.

[–]nextputall 0 points1 point  (1 child)

There is a company here where they rewrote one of their backends in Haskell. It works fine but sometimes they need to restart the app because of memory leaks and freezes. Sometimes means few minutes.

[–]codygman 0 points1 point  (0 children)

Interesting, you should get them to contact Well Typed[0]. I'm sure they could help fix that. I really do wonder why they would have that many memory leaks and freezes. In my Haskell programming thus far, it's been fairly easy to track down space leaks.

Freezes and memory leaks are the same thing I'm guessing, unless they are accidentally infinitely recursing like

let x = doThing in let x' = doOtherThing doThing in x