[erlang-questions] output [[[[]|2]|1]|0] instead of [2.1.0]

Roelof Wobben r.wobben@REDACTED
Tue Feb 10 15:58:39 CET 2015


Loïc Hoguin schreef op 10-2-2015 om 15:45:
> On 02/10/2015 03:42 PM, Loïc Hoguin wrote:
>> You are creating what is called an improper list.
>>
>> This is a proper list:
>>
>> [1,2,3]
>>
>> This is the same list using the | operator:
>>
>> [1|[2|[3]]]
>>
>> Now what happens if you write this, for example?
>>
>> [1,2|3]
>>
>> It still works. This is called an improper list. An improper list is a
>> list where the tail is not a list.
>
> Forgot to say that most lists functions expect proper lists and will 
> fail when they encounter an improper list, including the length/1 
> function.
>
> Cheers.
>
>> When you do A++B Erlang will only ensure that A is a list. B can be
>> anything. If it's not a list, however, then you end up with an improper
>> list.
>>
>> I advise you to avoid ++ when doing most list related exercices, go with
>> the | operator instead.
>>
>> On 02/10/2015 03:19 PM, Roelof Wobben wrote:
>>> Hello,
>>>
>>> I have to make a reversed list to a number so reverse_list(2) will
>>> output [2.1]
>> ...
>>
>

Hello,

Thanks both for the explanation.
I will rewrite the code to use | instead of ++

Roelof




More information about the erlang-questions mailing list