【发布时间】:2009-10-11 19:24:16
【问题描述】:
我现在开始熟悉 Sequential Erlang(以及函数式编程思想)。所以我想在没有 BIF 帮助的情况下实现以下两个功能。一个是left_rotate(我已经提出了解决方案),另一个是right_rotate(我在这里问)
-export(leftrotate/1, rightrotate/1).
%%(1) left rotate a lits
leftrotate(List, 0) ->
List;
leftrotate([Head | Tail], Times) ->
List = append(Tail, Head),
leftrotate(List, Times -1).
append([], Elem)->
[Elem];
append([H|T], Elem) ->
[H | append(T, Elem)].
%%right rotate a list, how?
%%
我不想在这个练习中使用 BIF。如何实现正确的旋转?
一个相关的问题和稍微重要的问题。我怎么知道我的一个实现是否有效(即,如果我在 BIF 的帮助下实现相同的东西,避免不必要的递归等)
我认为 BIF 旨在提供一些函数来提高函数式编程不擅长的效率(或者如果我们以“函数式方式”执行它们,则性能不是最优的)。
【问题讨论】:
标签: erlang functional-programming