[erlang-questions] OO programming style in Erlang?

Ulf Wiger ulf@REDACTED
Mon Jan 22 14:31:49 CET 2007


Den 2007-01-22 13:52:44 skrev Ladislav Lenart <lenartlad@REDACTED>:

> Ulf Wiger wrote:
>  > As far as possible, try to separate side-effect free code
>  > from that with side-effects. Typically, at least 90% of
>  > your code can be made side-effect free, and it's a good
>  > idea to really isolate the remaining 10%.
>  > [...]
>
> Does this mean that 90% should be implemented as a
> library functions and the reminding 10% should be
> isolated in a process?

Well, it is highly implementation-specific how you
choose to use processes, but the above probably works
as a rule of thumb. See e.g. Joe Armstrong's PhD
thesis, Making Reliable Systems in the Presence of
Software Errors, esp. chapters 4 and 8.

(http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf)


There are different types of side-effects:
processes, ets tables, process dictionary, mnesia, ...

All have their place, but functions that do not
depend on side-effects are much easier to debug and
reason about, so it's important to structure the
use of side-effects.

It could also be that one first puts data in an
ets table, and later decides that it's better to
have a gen_server or other keeping the data. If
ets accesses are littered all over the place, this
is obviously very difficult to change.


> But one interesting solution using a wrapper
> module comes to my mind now:
[...]

You may want to read Richard Carlsson's
Parameterized Modules in Erlang:
http://www.erlang.se/workshop/2003/paper/p29-carlsson.pdf

The concepts described in the paper have actually been
implemented, albeit flagged as 'experimental'.

BR,
Ulf W
-- 
Ulf Wiger



More information about the erlang-questions mailing list