[erlang-questions] String versus variable in binary literal
Wed May 16 11:15:06 CEST 2012
On 16/05/2012 09:49, Michel Rijnders wrote:
> Confused newbie here. Can someone please explain the following:
> 1> <<"foo">>.
> 2> Foo = "foo".
> 3> <<Foo>>.
> ** exception error: bad argument
> What's the error in the last case?
As a slightly less confused (I hope) newbie....
<<"foo">> is a binary - and stored as 3 consecutive bytes.
"foo" is a list of characters, stored as the character "f" (in a word)
and an address (also a word) pointing to the list "oo" stored in a
similar manner. Yes, that does take 8 bytes of storage per character on
32 bit systems, and 16 bytes on 64 bit systems. Erlang was designed for
telephony, and not text processing!
You have to trigger the conversion yourself, using
list_to_binary(IoList) -> binary() - see
Note that the parameter is an IoList - you can give list_to_binary a
comma separated list of lists and it will concatenate them for you. This
is more efficient than converting things as you go.
More information about the erlang-questions