2013-05-31 4 views
3

Например, у меня есть список [1,3,5] и еще один список [2,4,6], как добавить эти два списка таким образом, что он будет сформирован в список списков, например: [[1,3,5],[2,4,6]]?Создание списка списков в Erlang

Как мне манипулировать списком, если я добавлю следующий список в конце [7,8,9], чтобы выглядеть как [[1,3,5],[2,4,6],[7,8,9]]?

+2

Сторона комментария: В erlang, если у вас есть 'L = [A, B]' в списке и вы хотите добавить 'C', мы обычно добавляем' C' к фронту: '[C | L] ', который является таким же, как' [C, A, B] '. Вставка в конец списка очень дорогая, так как список растет. –

ответ

5

Вам просто нужно создать список, содержащий оба списка.

A = [1,3,5], 
B = [2,4,6], 
[A, B]. 
-1
1> [1,2,3 | [1,2,3]]. 
[1,2,3,1,2,3] 
2> lists:append([1,2,3], [1,2,3]). 
[1,2,3,1,2,3] 
+0

Пропущенный пункт. – Tilman

2
-module(lol). 
-export([new/0, append/2, head/1, tail/1]). 

new() -> []. 

append(H, []) when is_list(H) -> [H]; 
append(H, T) when is_list(H) -> [H | T]. 

head([H | _]) when is_list(H) -> H. 
tail([_ | T]) -> T. 

В оболочке вы могли бы тогда:

> Herp = lol:append([1,3,4], lol:new()). 
[[1,2,3]] 
> Derp = lol:append([4,5,6], Herp). 
[[4,5,6],[1,2,3]] 
> lol:head(Derp). 
[4,5,6] 

Я оставляю остальное как упражнение для пользователя.

Смежные вопросы