Hacker News new | ask | show | jobs
by tikhonj 4566 days ago
Haskell: other languages make making mistakes too easy.

This article came up about a year ago[1], so I'm just reusing my comment :P. Now I'd also add:

Go: C is the prefect language, except it's too low-level.

Ermine[2]: Scala is not functional (enough).

[1]: https://news.ycombinator.com/item?id=4954663

[2]: https://github.com/ermine-language/ermine

3 comments

> Go: C is the prefect language, except it's too low-level.

I feel go is more like "It would be nice to have a Python-like C that would also be a C-like Python"

Haskell: ML is eager.

Go: callback hell is hard to manage, but threads are too expensive.

If we're 'fixing' ML, type classes are a huge fix for the kludgy-yet-precise 2 + 3 => 5, 2.0 +. 3.0 => 5.0 .
Isn't "+." an ocaml thing rather than ML in general? I think SML had overloaded numeric operators, though I think that's a special case (i.e. type classes are still better)
Yep, you're right :). I opened the Standard ML book, and there on p75 they list * :: num * num -> num. Then at the bottom they say each function declared as such really has two definitions, one with num replaced by int and one with num replaced by real.

So yes, +. is just an ocaml thing. Not sure about caml.

Haskell is a far cry from just lazy ML. Oddly enough, your summary of go would be far more appropriate for haskell, which makes go's concurrency handling look primitive.
Scala: Maybe referential transparency is a good thing, but Haskell is scary.