2011-11-28 22 views
9

que estoy pasando "Programación Pragmática Erlang" donde hay una función definida de esta manera:Erlang: ¿qué combinación de patrones es más eficiente (listas)?

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

Lo que me interesa es el primer partido, a saber "\r\n\r\n" ++ T - ¿hay diferencia de rendimiento entre un patrón y una similar, que se me ocurrió: [13,10,13,10|T]? ¿O son equivalentes?

Sé que es una pregunta muy simple y que podría (probablemente) comprobarlo yo mismo, pero si hay una diferencia, me gustaría saber por qué es así.

Gracias!

Respuesta

8

"\r\n\r\n" ++ T es solo la sintaxis de azúcar para [13,10,13,10|T]. Debería realizar lo mismo. Si no hay algo mal ;-)

+0

Pensé que tal vez 'L1 ++ L2' es de alguna manera diferente, porque no pude encontrar una manera de transformarlo en' contras cuando se usa así: 'T ++ "\ r \ n" '- pero gracias a tu respuesta volví a pensar y me di cuenta de que es posible, aunque algo largo. ¡Gracias! – cji

+0

'T ++" \ r \ n "' no se puede transformar en conses, por lo que no se puede usar en la coincidencia de patrones. –

Cuestiones relacionadas