问题标签 [cons]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reference - 对 cons 单元格的引用
如何设置变量以指向列表单元格?
我正在尝试编写一个宏来将列表中的所有值乘以一个值。这是我目前拥有的:
我担心这不是最有效的做事方式,因为我两次查找第 n 个单元格。我宁愿设置一个变量指向第 n 个单元格,以便setf
可以修改该单元格的值并*
可以在其计算中使用该单元格的值。
更好的是使用dolist
并将变量设置为单元格引用。这是可能吗?
虽然我在这里,但当您有一个单元格时,是否也可以获取列表中的下一个单元格。有点像迭代器,这样我就可以执行以下操作:
但我不知道如何区分设置指针或设置引用单元格的值。
我希望我有道理:)
file-io - 为什么 line-seq 返回 clojure.lang.Cons 而不是 clojure.lang.LazySeq?
根据 line-seq ( http://clojuredocs.org/clojure_core/clojure.core/line-seq ) 的 ClojureDocs 条目和 Stack 问题的公认答案 ( In Clojure 1.3, How to read and write a file ),当传递 java.io.BufferedReader 时,line-seq 应该返回一个惰性序列。
但是,当我在 REPL 中对此进行测试时,该类型被列为 clojure.lang.Cons。请看下面的代码:
在惰性序列调用中结束 line-seq 调用会产生惰性序列,但根据文档,这不是必需的:无论如何,line-seq 都应该返回惰性序列。
注意:在 REPL(我正在使用 nrepl)内部,似乎惰性 seq 已完全实现,所以我认为这可能只是 REPL 的一个怪癖;但是,当我使用 Speclj 对其进行测试时,也存在同样的问题。另外,我不认为实现惰性序列与正在发生的事情有关。
编辑:所以我在mobyte的回答说缺点的尾部有一个惰性序列后去检查源代码......
对 cons 的调用可以解释为什么 line-seq 的返回值的类型是 clojure.lang.Cons。
list - 在列表中的给定位置插入元素
我不知道如何在列表中的 n 位置附加一个元素。例如:
没关系?:
list - 用有限的程序实现列表(lisp)
我目前正在制作一个基本地址簿的 clisp 任务。然而,这个任务的警告是我只能使用 cons、car、cdr、cond、if、eq、assoc 和 setf 来完成任务......
我很早就决定简单地实现我自己的列表并附加程序来简化流程,但这并不是特别好。坦率地说,我不知道如何仅使用上述过程生成非点列表。
这是我正在尝试做的事情:
显然我不能在这里使用列表,到目前为止,我唯一的解决方案是使用姓名和电子邮件,使用电话号码和使用地址,这并不是我想要的。
TL;DR 有没有办法只使用 cons、car、cdr、cond、if、eq、assoc 和 setf 来实现列表过程。
lisp - Is an empty list in Lisp built from a cons cell?
I'm trying to emulate Lisp-like list in JavaScript (just an exercise with no practical reason), but I'm struggling to figure out how to best represent an empty list.
Is an empty list just a nil
value or is it under the hood stored in a cons cell?
I can:
but an empty list for sure can not be (cons nil nil)
, because it would be indistinguishable from a list storing a single nil
. It would need to store some other special value.
On the other hand, if an empty list is not built from a cons cell, it seems impossible to have a consistent high-level interface for appending a single value to an existing list. A function like:
Would modify its argument, but only if it is not an empty list, which seems ugly.
vps - Disadvantages of using Linode VPS?
I have been looking to find a set of disadvantages of using Linode VPS.
There does not seem to be any dedicated articles for what I have searched on the internet.
Can anyone list some disadvantages?
I'm researching the pros and cons for modern server set-ups.
Thanks in advance.
c - 如何有效地引用计数缺点细胞(检测周期)?
我需要做一些liblisp
(在 C11 中),它需要处理基本功能,就像libobjc
对 Objective-C 语言所做的一样。
编辑
我将问题改写为不那么通用的问题。
我有一个这样的实现:
所以我可以制作一个 cons 单元(它使用一个带有引用计数对象的内存池)。我还可以cons_is_managed
用来检查 cons 单元是否在内存池内(因此您可以使用外部定义的单元,而不是使用创建的单元cons_init
(如静态数据)。
我怎样才能在这里有效地实现自动引用计数,如果有人调用cons_set_car
,或者如果参数是托管的 cons 单元格cons_set_cdr
,它将增加引用计数?void *
后宫和乌龟问题在这里没有用处,因为每个单元格都有两种可能的路径(如果 car 和 cdr 都是 conses,它可能无处可去),它们可以是列表、树或图形。
cons_set_car
我可能应该注册在 on /中使用的外部(非托管)conses cons_set_cdr
,以便找到涉及它们的循环,但我仍然不确定如何有效地做到这一点。
由于这是一个更受控制的上下文,然后是图中的一般循环(节点上最多两个顶点),我有没有机会在线性时间内做到这一点并避免垃圾收集(这将是我的计划 B)?
主要问题是这是任何函数式语言的核心,所以这些函数会被调用很多次(比如obj_msgSend
),它们是瓶颈。
谢谢。
在另一种方法上,为了简化问题:如何在基于引用计数的语言(如 Objective-C + ARC 或 Vala)上实现 cons 单元?
recursion - 方案 car 和 cdr 递归
有人可以向我解释递归如何在以下函数中工作吗?具体来说,我对函数达到其基本情况时会发生什么感兴趣。另外,为什么在这段代码中使用了一个命名的 let?(我不熟悉命名的让)
recursion - 使用面额列表计算方案变化
我正在编写一个函数来计算在给定面额列表和金额的情况下改变方案的方式的数量。我的代码如下,但它没有按预期工作。我应该使用 cons 而不是 + 运算符吗?第三行的基本情况应该是空列表吗?
测试:
list - Scheme中的Cons element to list vs cons list to element
使用 cons 将元素组合到列表和使用 cons 将列表组合到方案中的元素有什么区别?
此外, cons 究竟是如何工作的?它将元素添加到列表的末尾还是开头?
谢谢!