2011-11-28 4 views
9

Je vais par « Pragmatique programmation Erlang » où il y a une fonction définie comme ceci:Erlang: quel appariement est plus efficace (listes)?

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

Ce qui me intéresse est le premier match, à savoir "\r\n\r\n" ++ T - est là différence de performance entre un modèle et un semblable, que je suis venu avec: [13,10,13,10|T]? Ou sont-ils équivalents?

Je sais que c'est une question très simple et que je pourrais (probablement) vérifier moi-même, mais si il y a une différence, je voudrais savoir pourquoi c'est le cas.

Merci!

Répondre

8

"\r\n\r\n" ++ T est juste la syntaxe du sucre pour [13,10,13,10|T]. Il devrait effectuer la même chose. Sinon, il y a quelque chose qui ne va pas ;-)

+0

Je pensais que peut-être 'L1 ++ L2' est quelque peu différent, parce que je ne pouvais pas trouver un moyen de le transformer en' cons'es lorsqu'il est utilisé comme ça: 'T ++ "\ r \ n" '- mais grâce à votre réponse, j'ai encore réfléchi et j'ai réalisé que c'était possible, même si c'est un peu long. Merci! – cji

+0

'T ++" \ r \ n "' ne peut pas être transformé en conses donc ne peut pas être utilisé dans la recherche de motif. –

Questions connexes