J'ai vraiment du mal à comprendre la récurrence de la queue à Erlang.Recursion de queue à Erlang
Je le test eunit suivant:
db_write_many_test() ->
Db = db:new(),
Db1 = db:write(francesco, london, Db),
Db2 = db:write(lelle, stockholm, Db1),
?assertEqual([{lelle, stockholm},{francesco, london}], Db2).
Et voici ma mise en œuvre:
-module(db) .
-include_lib("eunit/include/eunit.hrl").
-export([new/0,write/3]).
new() ->
[].
write(Key, Value, Database) ->
Record = {Key, Value},
[Record|append(Database)].
append([H|T]) ->
[H|append(T)];
append([]) ->
[].
est mon queue de mise en œuvre récursive et sinon, comment puis-je faire cela?
Merci à l'avance
Vous vous demandez si votre fonction 'append' est récursive? Puis-je demander à quoi ça sert? Est-ce que '[Record | Database]' ne fonctionnerait pas aussi bien? –
J'ai le sentiment qu'il laisse de côté la fonctionnalité pour la brièveté. –
Introduire une temp. variable, et vous verrez votre append n'est pas tail-recursive: 'append ([H | T]) -> T1 = append (T), [H | T1];' – Zed