Erlang: какое сопоставление с образцом более эффективно (списки)? - PullRequest
9 голосов
/ 28 ноября 2011

Я прохожу «Прагматическое программирование на Эрланге», где есть функция, определенная так:

split("\r\n\r\n" ++ T, L) -> {reverse(L), T};
split([H|T], L) -> split(T, [H|L]);
split([], _) -> more.

Что меня интересует, так это первый матч, а именно "\r\n\r\n" ++ T - есть ли разница в производительности между таким шаблоном и аналогичным, который я придумал: [13,10,13,10|T]? Или они эквивалентны?

Я знаю, что это очень простой вопрос, и я мог бы (возможно) проверить его сам, но если есть разница, я хотел бы знать, почему это так.

Спасибо!

1 Ответ

8 голосов
/ 28 ноября 2011

"\r\n\r\n" ++ T - это просто синтаксический сахар для [13,10,13,10|T].Он должен выполнять то же самое.Если нет, то что-то не так; -)

...