[Haskell-cafe] Can you do everything without shared-memory concurrency?

Arnar Birgisson arnarbi at gmail.com
Mon Sep 8 15:53:58 EDT 2008


Hi Bruce,

On Mon, Sep 8, 2008 at 21:33, Bruce Eckel <bruceteckel at gmail.com> wrote:
> I know that both Haskell and Erlang only allow separated memory spaces
> with message passing between processes, and they seem to be able to
> solve a large range of problems -- but are there problems that they
> cannot solve?

Modern Haskell has shared memory variables, so that statement
"[Haskell] only allows seperated memory spaces..." is not true in
practice. In fact, Haskell probably has the (semantically) cleanest
and best implementation of STM (Software Transactional Memory) there
is imho, which removes most of the headaches of shared memory based
concurrency without sacrificing shared memory itself.

As for the question "Is there something that the Actor model cannot do
but you can with shared memory?", I'd say the answer is probably no.
After all, you could just simulate shared memory by having one actor
manage all "shared" state.

> I recently listened to an interview with Simon
> Peyton-Jones where he seemed to suggest that this newsgroup might be a
> helpful place to answer such questions. Thanks for any insights -- it
> would be especially useful if I can point to some kind of proof one
> way or another.

I may be completely missing your point, and if so I apologize, but
does the simulation argument above suffice as a proof?

cheers,
Arnar


More information about the Haskell-Cafe mailing list