gpt4 book ai didi

functional-programming - 函数式编程 : what is an "improper list"?

转载 作者:太空宇宙 更新时间:2023-11-03 18:31:54 26 4
gpt4 key购买 nike

有人可以解释什么是“不正确的列表”吗?

注意:感谢大家!你们都摇滚!

最佳答案

我认为@Vijay 的回答是迄今为止最好的回答,我只是打算对其进行 Erlangify。

Erlang 中的对(cons 单元格)写成[Head|Tail],nil 写成[]。对于头部和尾部是什么没有限制,但是如果您使用尾部链接更多的 cons 单元格,您将得到一个列表。如果最后的尾部是 [],那么您将得到一个正确的列表。对列表有特殊的句法支持,因为正确的列表

[1|[2|[3|[]]]]

写成

[1,2,3]

和不正确的列表

[1|[2|[3|4]]]

写成

[1,2,3|4]

所以你可以看出区别。匹配正确/不正确的列表相应地很容易。所以一个长度函数 len 用于适当的列表:

len([_|T]) -> 1 + len(T);
len([]) -> 0.

我们明确匹配终止 []。如果给定一个不正确的列表,这将产生一个错误。虽然返回列表最后尾部的函数 last_tail 也可以处理不正确的列表:

last_tail([_|T]) -> last_tail(T);
last_tail(Tail) -> Tail. %Will match any tail

请注意,构建列表或与其匹配,就像您通常使用 [Head|Tail] 所做的那样,不会检查尾部是否为列表,因此没有处理不正确列表的问题。很少需要不正确的列表,尽管您可以用它们做一些很酷的事情。

关于functional-programming - 函数式编程 : what is an "improper list"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1919097/

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