gpt4 book ai didi

list - 在 erlang 中模拟 range(L,N)

转载 作者:行者123 更新时间:2023-12-04 18:40:23 26 4
gpt4 key购买 nike

一大早用 Erlang 玩我得到了一个奇怪的结果:

   -module(bucle01).

-compile(export_all).

for(N) when N >=0 ->

lists:seq(1,N).


for(L,N) when L =< N ->

lists:seq(L,N);

for(L,N) when L > N ->

lists:reverse(for(N,L)).

当我运行程序时,我看到:
> bucle01:for(1,10).

[1,2,3,4,5,6,7,8,9,10]

> bucle01:for(10,1).

[10,9,8,7,6,5,4,3,2,1]

>bucle01:for(7,10).

[7,8,9,10]

>bucle01:for(8,10).

"\b\t\n" %% What's that !?!

>bucle01:for(10,8).

"\n\t\b" %% After all it has some logic !

任何“Kool-Aid”到“不要喝太多”好吗?

最佳答案

Erlang 中的字符串只是 ASCII 数字的列表。 Erlang shell 尝试在没有元数据的情况下通过查找可打印字符来确定您的列表是数字列表还是字符串。
\b (退格), \t (标签)和 \n (换行符)都是一些常见的 ASCII 字符,因此 shell 向您显示字符串而不是数字。但是,列表的内部结构完全相同。

Erlang 常见问题解答也涵盖了这一点:
Why do lists of numbers get printed incorrectly?
这里有一些想法可以防止这种魔法:Can I disable printing lists of small integers as strings in Erlang shell?

关于list - 在 erlang 中模拟 range(L,N),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12880288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com