2011-11-28 2 views
9

:私は最初の試合で興味のあるものをErlang:どのパターンマッチングがより効率的(リスト)ですか?私はこのように定義された関数があり、「実用プログラミングErlangの」を通じてつもりです

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

、すなわち"\r\n\r\n" ++ T - このようなパターンと同様のものとの性能差があります、私が思いつきました:[13,10,13,10|T]?それとも同等ですか?

私はそれが自分で確認できる(おそらく)ことがわかっていますが、の場合はに違いがありますが、その理由は何ですか?

ありがとうございます!

答えて

8

"\r\n\r\n" ++ Tは、[13,10,13,10|T]の構文砂糖です。それは同じことを実行する必要があります。もし何か間違っていれば;-)

+0

私は 'L1 ++ L2'は何とか違うと思っていました。私はそれを' cons'esに変換する方法を見つけることができなかったでしょう。 'T ++ "\ r \ n" ' - しかし、あなたの答えに感謝して、もう一度考えました。ありがとう! – cji

+0

'T ++" \ r \ n "'はコンスに変換できないため、パターンマッチでは使用できません。 –