Hacker News new | ask | show | jobs
by samcal 2056 days ago
I really like that distinction, relating imperative/FP tradeoffs to the classic space/time tradeoff. I'd also point out that betting on space getting cheaper over time seems like a better bet than betting on time getting cheaper :)
2 comments

That's not the trade-off. The trade-off is about what you have to think about when programming, and what kinds of bugs appear.

Non-buggy performance follows different rules.

Is time better? My experience with Haskell went like this.

1. Interested in Haskell. Learn the language, read papers, enjoy the PL concepts and interesting academic work.

2. Does it scale? Implement small program in in C++ and Haskell. Optimize as best I can. Talk to people who work on ghc who happen to be in my lab. Further optimize. Everybody agrees, no further clear way to optimize the Haskell program.

C++ implementation remains several orders of magnitude faster.

If it were a time and space trade off, laziness would lead to good performance. But it doesn’t. It tends to produce stupendously bad cache behavior.

Haskell is a lovely platform for understanding some recent PL theory. It is possible to write the sort of obviously correct programs that make it so desirable.

It isn’t resource efficient. Worse, laziness means that performance tends to be chaotic. Small seemingly unrelated changes can change the execution order and change your profile a lot. Similar challenges exist in logical programming.