[erlang-questions] What's the difference between tuple and list ?

Ulf Wiger (TN/EAB) <>
Tue Sep 25 13:09:01 CEST 2007


raocheng wrote:
> The Pragmatic Programming Erlang says:
> 1) Suppose you want to group a fixed number of items into a single 
> entity.For this you'd use a tuple.
> 2) We use lists to store variable numbers of things.
>  
> However, we know that variables in Erlang are in essence invariable. So 
> what is the difference between tuple and list ?
>  
> Thanks in advance.

While a certain bound instance of an object will not
change, we often construct new data structures from
old ones. So if I have a variable

Team = [joe, hans, mats]

and want to add an element:

Team1 = [ulf | Persons]

I have constructed a new variable out of the old
one, but I have not changed Team. Still, you could say
that the data object has changed. This becomes clearer
if we think of a process that holds the data as a
function argument

loop(Team) ->
    receive
       {add, Member} ->
          loop([Member|Team]);
       {remove, Member} ->
          loop(lists:delete(Member, Team))
    end.

In this case, using a list is far better than
using a tuple, since the program doesn't really
know what the number of elements will be.

BR,
Ulf W



More information about the erlang-questions mailing list