2011-11-28 2 views
9

: 내가 먼저 일치 관심사를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] 단지 구문 설탕입니다. 그것은 동일을 수행해야합니다. 아니 내가 그와 같이 사용할 때이 cons`es`로 변환 할 수있는 방법을 찾을 수 있기 때문에 L1 ++ L2`는, 어떻게 든 다른`어쩌면 생각 ;-)

+0

뭔가 문제가있는 경우 :'T는 ++ "\ r \ n"'-하지만 당신의 대답 덕분에 다시 생각해 보았습니다. 다소 길긴했지만 그것이 가능하다는 것을 깨달았습니다. 감사! – cji

+0

'T ++ "\ r \ n"'는 영안어로 변형 될 수 없으므로 패턴 일치에 사용할 수 없습니다. –