2012-04-19 3 views
0

이것은 역행렬을 수행하는 얼랭 코드입니다.문자열을 뒤집을 얼랭 코드

하지만 작동하지 않습니다.

-module(lists1). 
-export([reverse/1]). 
    reverse(L) -> 
     reverse(L, []). 
    reverse([H|T], L) -> 
     reverse(T, [H|L]); 
    reverse([], L) -> 
     L. 

lists1 : reverse (Bbc). ** 예외 오류 : list1 : reverse (def, []) (lists1.erl, line 5)와 일치하는 함수 절이 없음

왜?

어떤 도움을 주시면 감사하겠습니다. 오류 메시지를 기반으로

감사

답변

7

, 당신은 대신 문자열 ("def")의 원자 (def)를 역전했습니다. 원자는 문자열/목록이 아니므로 패턴과 일치하지 않습니다. 당신은 하나의 경우를 처리하기 위해 추가 할 수 있습니다

reverse(A) when is_atom(A) -> list_to_atom(reverse(atom_to_list(A))); 
reverse(L) -> reverse(L, []). 

. 나에게주는

이 :

Eshell V5.7.4 (abort with ^G)
1> lists1:reverse(def).
fed
2>

+2

왜 당신이 이제까지 원자를 반대할까요? –

+0

@ user1002288,받는 사람을 수락하면 더 많은 답변을 얻을 수 있습니다. –