[erlang-questions] OO programming style in Erlang?

Sean Hinde sean.hinde@REDACTED
Tue Jan 23 20:44:11 CET 2007


On 23 Jan 2007, at 19:11, Ladislav Lenart wrote:

> And this I guess is the part I have a psychological problem with.
> I am used to an idiom where data are hidden behind an interface
> that operates on them. This decouples user of the module from
> having to deal with internals of that module. But as you described
> it, data are exposed in Erlang. So each time you want to change the
> representation (add something because of one new function), you have
> to revisit many of the existing functions that operate on that
> representation. This seems more than a few changes to me...

Not so bad. If you use records then it is just a recompile (I  
recommend incororating edep into your build process). If you  
seriously change the meaning of the data then I see no difference -  
all users have to take care of the new meaning anyway.

If you are simply changing the representation without changing the  
meaning then you must have a lot of spare time on your hands :-)

Presumably writing your system in erlang means you have some  
concurrency. One guideline would be to design the boundaries between  
processes so that the interfaces are simple or regular, and reserve  
the complex stuff to be inside the process and hence limited to a few  
modules.

I guess in that sense there is some similarity to Smalltalk, except  
that the granularity is larger and the decision criteria for the  
boundaries is different.

Also fair to say that in some systems I have worked on it has become  
extremely tedious and error prone to change the representation of  
pervasive data structures. At such times I have even wished for some  
static typing help :-)

Of course there is nothing stopping you from building your own dict  
style modules for common data structures in your app - the erlang way  
for this (as well described by Uffe) is to pass the whole old data  
structure into the function, and get back a new one modified - pure  
functions without  side effects.

Sean






More information about the erlang-questions mailing list