Я очень новичок в Erlang, и я пытаюсь скомпилировать свою первую программу, и во время компиляции я получаю синтаксическую ошибку.Основы Erlang: ошибка синтаксиса во время компиляции
Ошибка синтаксиса. Я получаю очки к строке 2 filter_inside
undefined. Также синтаксическая ошибка на последней строке перед X
.
functions.erl
-module(functions).
-export([filteri/2]).
filteri(_, []) ->
[];
filteri(P,[X|XS]) ->
[(map(P) X)|filteri P XS].
Я пытался отладить около часа, в настоящее время не имела успеха, мне было интересно, если кто-то может помочь мне определить, что речь идет о коде, который делает его не компиляции.
Большое спасибо заранее!
Но необходимость перечеркнуть список удаляет много выигрыша, см. Http://www.erlang.org/doc/efficiency_guide/myths.html#tail_recursive – rvirding
Я сделал пробег во времени, filter_inside2 - хвост рекурсивный '2> таймер: tc (cmd, filter_inside2, [fun (A) -> A * 2 end, lists: seq (1,10000000)]). {25707000, [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, 44 , 46,48,50,52,54 | ...]} 3> timer: tc (cmd, filter_inside, [fun (A) -> A * 2 end, lists: seq (1,10000000)]). {48666000, [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, 44 , 46,48,50,52,54 | ...]} ' – Vinod
Кроме того, пространство занимало около 200 МБ в хвосте и 300 МБ с рекурсивной функцией тела (используемый сырой метод, просматривая память процесса) на 64-битной машине. Только 100 мс было быстрее, когда списки: реверс был удален, и я не видел изменения пространства. – Vinod