如何获取List的最后一个元素的值?我注意到List.hd(或.Head)返回一个项目,而List.tl(或.Tail)返回一个List.
转发列表并获得高清唯一的方法吗?谢谢.
我只使用了3种函数式语言 - scala,erlang和haskell,但在所有这三种语言中,构建列表的正确方法是将新数据添加到前面然后反转它而不是仅仅追加到最后.当然,您可以附加到列表,但这会导致构建一个全新的列表.
为什么是这样?我可以想象这是因为列表在内部实现为链接列表,但为什么它们不能仅作为双链表实现,所以你可以追加到最后没有惩罚?是否有某些原因所有功能语言都有此限制?
我正在寻找支持以下操作的功能数据结构:
正常的功能链表仅支持O(n)附加,而我可以使用普通LL然后反转它,反向操作也是O(n),它(部分地)否定O(1)cons操作.