Hacker News new | ask | show | jobs
by zaphar 4127 days ago
No, Functional languages reduce the problems surface area but they don't eliminate it. You can still get data races and deadlocks in Haskell. They aren't the same as a memory race in say C where the contents of a variable might change out from under you in truly bizarre ways but you still get algorithmic races where the wrong answer comes our the other end because two parallel operations happened in the wrong order.
2 comments

You can't get deadlocks and data races on pure code.

Once your code is in a monad, every one of those problems may be back (including memory race).

The IO monad in particular. Monads by themselves don't introduce races/deadlocks.
>two parallel operations happened in the wrong order.

I thought separate functions weren't allowed to have dependencies like this?

Simply put, not everything is commutative.