作为对this的一个迟来的后续行动,有人能启发我为什么Emacs ELPA软件包isNewCourse = true
文件中使用的数据结构是一个点对的名称(符号)和一个向量包含很多东西?
以这种方式进行的好处是什么?似乎只是随机刺刺是故意的。这是建立在什么先例上?
isNewCourse
...想象//get courses count to-be accepted
router.route("/courses").get((req, res) => {
CourseDB.countDocuments({}, function(err, count) {
res.status(200).send(`${count}`);
});
});
拥有更多列表成员;例如MELPA可用软件包列表很大。因此,如果我做archive-contents
,我就会得到以(1
(ace-window .
[(0 9 0)
((avy (0 2 0)))
"Quickly switch windows." single
((:url . "https://github.com/abo-abo/ace-window")
(:keywords "window" "location"))])
开头的点对的伴随向量。似乎该列表旨在使用以前的sexp。是的,为什么他们在这种情况下使用向量?这是一种好习惯吗?我听说Clojure鼓励在列表上更多地使用数组和向量。这更符合Clojure的哲学吗?因此,如果列表更像是一个元组(即具有set且永不变的成员),则应始终使用向量代替列表吗?还是mysterious tuple problem的变体?
答案 0 :(得分:1)
因此,如果列表更像是一个元组,即具有固定不变的成员,那么应该始终使用向量代替列表吗?
这样做有好处 1 ,是的。特别是,访问元素对于矢量来说是O(1),对于列表来说是O(n)。
C-h i g (elisp)Sequences Arrays Vectors
解释:
“序列”类型是另外两个Lisp类型的并集:列表和 数组。换句话说,任何列表都是序列,任何数组都是 顺序。所有序列的共同属性是每个序列都是 元素的有序集合。
“数组”是固定长度的对象,每个对象都有一个插槽 元素。所有元素都可以在恒定时间内访问。四个 数组的类型是字符串,向量,字符表和布尔向量。
列表是元素的序列,但不是单个原语 宾语;它由cons单元组成,每个元素一个单元。寻找第N个 元素需要查看N个con单元格,因此距离 列表的开头需要更长的时间才能访问。但是有可能 在列表中添加元素,或删除元素。
1 取决于特定的用例,实际中可能没有,也没有明显的好处。