Hacker News new | ask | show | jobs
by dogfishbar 1262 days ago
Thanks for letting us tag along. What I'd like to hear are your thoughts on the Groucho Marx cigar question: laziness is useful every now and then, but in lazy languages like Haskell you pay for it everywhere. The same is true for dynamic dispatch, it's needed when working with values of sum type. But like laziness, it isn't needed wall-to-wall but in dynamically-typed languages, you pay for it everywhere. Give me a call-by-value language with arrow and sum types and I can pay as I go. [edit: added "arrow and"]
1 comments

Ocaml then?

It has optional options-in lazyness for the few times you really need it.

Or just rolling it yourself with e.g. a python generator

Sure, OCaml is great as are the other dialects of ML. I'm hoping that someone will weigh in with a compelling case for laziness everywhere or dynamic dispatch everywhere, other than pre-existing infrastructure, libraries, etc.
> hoping that someone will weigh in with a compelling case for laziness everywhere

How should this happen? You can hear even form the horses mouth that laziness by default was a big mistake.

> dynamic dispatch everywhere

Big mistake of most "OO language" indeed.

Rust got this right. Static dispatch is the default (simple and fast!) but you can have dynamic dispatch where it makes sense. I hope this design will be copied in the future everywhere. Maybe even some language manage to get rid of their mistake and switch to the sane design (looking at you Scala, just make type-classes first-class, but keep OOP for the cases where it makes sense).