:- use_module('../prolog/edcg.pl').  % :- use_module(library(edcg)).

% Declare accumulators
edcg:acc_info(adder, X, In, Out, plus(X,In,Out)).

% Declare predicates using these hidden arguments
edcg:pred_info(len,0,[adder,dcg]).
edcg:pred_info(increment,0,[adder]).

increment -->>
    [1]:adder.


len(Xs,N) :-
    len(0,N,Xs,[]).

len -->>
    [_],
    !,
    increment,
    len.
len -->>
    [].


:- use_module(library(plunit)).

:- begin_tests(edcg_synopsis).

test(t1) :-
    len([],0).

test(t2) :-
    len([a],1).

test(t3) :-
    len([a,b,a],3).

:- end_tests(edcg_synopsis).

end_of_file.
