Erlang butlast功能

时间:2016-05-01 04:46:49

标签: erlang

我正在尝试在Erlang中创建一个butlast函数,如果你给它一个列表,它将返回一个没有最后一个元素的列表。这就是我所拥有的:

butlast([]) -> undefined;
butlast([H, _]) -> H;
butlast([H|T]) ->[H|butlast(T)].

但是,我的输出如下:

butlast([1,2,3,4,5,6]).
[1,2,3,4|5]

为什么会这样?管道操作员|是不是应该同时使用4和5?

1 个答案:

答案 0 :(得分:3)

在第二种情况下,您应该返回[H]而不是H

-module(a).
-compile(export_all).

butlast([]) -> undefined;
butlast([H, _]) -> [H];
butlast([H|T]) ->[H|butlast(T)].

测试:

1> c(a).
{ok,a}
2> a:butlast([1, 2, 3, 4, 5, 6]).
[1,2,3,4,5]