gpt4 book ai didi

function - 设计师为什么要在clojure里做vector、map、set函数?

转载 作者:行者123 更新时间:2023-12-04 17:08:12 24 4
gpt4 key购买 nike

丰富的vector、map和set函数,而list和sequence不是函数。
为什么所有这些集合都不能使其保持一致?

此外,为什么我们不将所有这些组合数据作为将位置映射到其内部数据的函数呢?

如果我们将所有这些组合数据作为函数,那么 clojure 中将只有函数和原子数据。这将最大限度地减少该语言中的基本元素,对吗?

我相信一组最小的、最好的只有 2 个基本元素将使语言更简单、更具表现力和更灵活。它是否正确?

最佳答案

向量、映射和集合都是关联数据结构。 map 是最明显的;它们只是将任意键与任意值相关联。向量可以被认为是一个映射,其键集必须是小于向量大小的所有非负整数的集合。最后,可以将集合视为将键映射到自身的映射。

重要的是要理解向量的顺序性质和向量的关联性质是两个正交的东西。它是一种数据结构,旨在很好地支持两种抽象(在某种程度上;例如,您不能有效地在向量的开头插入)。

列表比向量简单;它们是有限的顺序数据结构,仅此而已。列表不能有效地返回特定索引处的元素,因此它不会将该功能作为其核心接口(interface)的一部分公开。当然,您可以使用 nth 通过索引获取列表的元素,但在这种情况下,您明确地将其视为序列,而不是关联结构。

所以要回答你的问题,IFn向量、映射和集合的实现是因为关联数据结构的思想和纯函数的思想之间极其密切的关系。列表和其他序列本质上不是关联的,因此为了保持一致性,它们不实现 IFn .

关于function - 设计师为什么要在clojure里做vector、map、set函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36510969/

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