Functional programming erlang中的分裂数组

Functional programming erlang中的分裂数组,functional-programming,erlang,erlang-shell,Functional Programming,Erlang,Erlang Shell,我编写了一个简单的函数,将数组拆分为两部分 split([], [], []) -> [[], []]; split([], [], Part2) -> [[], Part2]; split([], Part1, []) -> split([], [], Part1); split([], Part1, Part2) -> [Part1, Part2]; split([Head | Tail], Part1, Part2) -> split(Tail, Part2,

我编写了一个简单的函数,将数组拆分为两部分

split([], [], []) -> [[], []];
split([], [], Part2) -> [[], Part2];
split([], Part1, []) -> split([], [], Part1);
split([], Part1, Part2) -> [Part1, Part2];
split([Head | Tail], Part1, Part2) -> split(Tail, Part2, [Head | Part1]).
我试着使用我的功能,但我遇到了一个巨大的问题,如下图所示。该函数适用于许多示例,但如果用于输入
[4,9,2],[],[]
我得到了以下奇怪的结果
[“\t”,[2,4]]

问题在哪里?
感谢您的回答和时间。

这是erlang的行为:

8> [9].  
"\t"
9> ["\t"].
["\t"]

这是因为,从erlang的POV来看,字符串只是一系列数字。如果数字对应于可打印字符,erlang将尝试将数字打印为字符。

erlang中的字符串只是ASCII范围内的整数列表。ASCII代码9表示制表符号,因此列表[9]和字符串“\t”对于Erlang是相等的。谢谢您的回答。您认为这种行为正常吗?正如achydragon所说,2“\t”和[9]是打印相同值的两种不同方式。这是erlang shell中的一种选择,但它对您在程序中使用此结果的方式没有影响,因此是的,这是正常的。您可以比较
io:format(“~w~n”、[[9]])和
io:format(~p~n”、[[9]])的结果。
p
“预打印其值,这是它所做的事情之一。它还可以智能地将长输出拆分为多个缩进行