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

Loïc Hoguin essen@REDACTED
Tue Feb 10 15:45:39 CET 2015


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]
> ...
>

-- 
Loïc Hoguin
http://ninenines.eu



More information about the erlang-questions mailing list