Erlang代码反向字符串

时间:2012-04-19 00:37:27

标签: algorithm erlang

这是一个执行字符串反转的Erlang代码。

但是,它不起作用。

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

lists1:reverse(Bbc)。 **异常错误:没有匹配lists1的函数子句:reverse(def,[])(lists1.erl,第5行)

为什么?

任何帮助将不胜感激。

感谢

1 个答案:

答案 0 :(得分: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(以^ G中止)
  1 GT; lists1:反向(DEF)
。    美联储
  2 - ;