Your own behaviours

Ulf Wiger etxuwig@REDACTED
Tue Sep 25 09:30:40 CEST 2001

On Mon, 24 Sep 2001, Chandrashekhar Mullaparthi wrote:

>I tried looking at the documentation but couldn't find it - is
>it possible for a module to implement more than one behaviour??

This has been done in a few instances in the past. One example is
sasl.erl, which implements both an 'application' behaviour and a
'supervisor' behaviour. In the case of sasl.erl, it's labeled as
an 'application' behaviour, so the linter doesn't know to check
for 'supervisor' behaviour compliance.

If one wants to implement multiple behaviours with the new model
for specifying behaviours, it would have to be done in the same
way. I recommend against it. I think one module - one behaviour
is logical.

>I don't have an example of why I would need to do this but it
>occured to me that it can be quite powerful for a process to
>implement different behaviours. A bit like a class implementing
>a number of interfaces in Java.

Yes, but in Java, the class concept is central, and it'd be
awkward to have to define multiple classes in order to support
multiple types of interface. Erlang is structured differently.
Without going deeper into why, I don't think the analogy holds.

Ulf Wiger                                    tfn: +46  8 719 81 95
Senior System Architect                      mob: +46 70 519 81 95
Strategic Product & System Management    ATM Multiservice Networks
Data Backbone & Optical Services Division      Ericsson Telecom AB

More information about the erlang-questions mailing list