erlangにeratosphenesのふるいを実装しようとしています。ただし、アルゴリズムの2番目のステップを通過できません。マークされたエントリにpを入力して、pより大きい値が見つかるまでリストを調べたときに、それも素数であることがわかるようにします。
-module(sieve).
-export([primes/0]).
primes() -> L = lists:seq(2,20),
mark(L,2).
mark(L,P) -> mark(L,P,2,[]).
mark([],_,_,N) -> N;
mark([_|T],P,C,N) when C =:= P -> mark(T,P,C+1,[N|[P]]);
mark([H|T],P,C,N) -> mark(T,P,C,[N|[H]]).
++で追加しようとしましたが、同じ結果になります。