问题标签 [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.
list - 模式匹配 x::xs 没有在 F# 中相应地拆分列表?
我是 F# 的新手,我正在尝试编写一个方法 split 将列表分成两部分。它需要一个元组,第一个元素是要拆分的元素数,第二个元素是列表。例如, split (2, [1;2;3;4;5;6]) 应该返回 ([1;2], [3;4;5;6]),
这是我到目前为止所拥有的,但由于某种原因,它将元组的第二个元素作为没有头部的原始列表返回。我不明白这一点,因为我认为 x::xs 会自动使 x 成为头元素,而 xs 成为列表的其余部分,这意味着每个递归调用都会占用前一个列表的尾部并切断第一项。
scheme - 在 Scheme 中乘以 cons 列表
我能够制作一个方案代码来在方案中添加两个缺点列表。比如说,list1 - '( p . d) list 2 ' ( ppp . d) 我使用 cdr & car 概念的自定义添加功能,可以按预期执行 (pppp . d)。
但是,我现在想根据 p 的数量将 & 相乘,我有一个自定义函数可以给我 list count 。比如说,对于 list1 -> 1 list2-> 3
我还可以设法检测两个列表中的任何一个是否为空,所以我输出 'd.
但真正的问题是当涉及到乘法时。list1 - '(pp . d) list2 - '(ppppp . q) 结果预期 - (2 * 5 = 10 p's) 所以 '(pppppppppp . z)
我尝试使用 while loop 、 do while 、 add custom function ,但我似乎不知道该怎么做。也许一些指导可以帮助我:)
我想构建一个自定义函数,因为我不想使用 set !或任何使过程更容易但想了解递归在这种情况下可以工作的方式:)。
functional-programming - 在 sml 中解释 []::[], []::[]::[]
我想问一下在 SML/NJ 中如何[]::[]
以及如何在概念上进行解释。[]::[]::[]
我的想法 :
我认为这[]::[]
会产生错误或生成一个空列表,但实际上它会生成val it = [[]] : 'a list list
.
在我知道[]::[]
生成之后[[]] : 'a list list
,我认为[]::[]::[]
会生成[[[]]] : 'a list list list
,但实际上它会生成[[],[]] : 'a list list
list - 为什么 :: 仅适用于列表?
使::
特定List
于所有子类而不适用于所有子类的原因是Seq
什么?举一个具体的例子:
所有序列都是有序的,并且有“头”和“尾”的概念,那么为什么集合库的实现者只提供::
给List
? +:
如果我想能够与 all 一起工作,为什么必须使用Seq
?
编辑:我理解性能论点——几乎每次我问这个问题时都会得到它——但我在很大程度上不同意它。想象一个不同的集合库,其中只有一件事发生了变化:删除::
from List
。会发生什么变化?
- 我仍然可以使用
+:
诸如.Nil
"A" +: "B" +: Nil
- 我仍然可以优雅地使用模式匹配
+:
来提取列表的不同部分。例如case head +: tail => println(head)
- 有一个统一的方法来构建和模式匹配的所有子类
Seq
。这消除了使用 linter 来查找细微错误的需要,例如我在getTail
.
老实说,我没有看到独特的方法如何List
使任何事情变得更容易、更清晰或比使用+:
. 如果是这样的话,那么我认为没有理由::
具体到List
. 鉴于此,我根本看不到存在的理由::
。
scheme - 在球拍/方案中的参数前使用 cons
我知道cons
是为了构建对,比如(cons 2 (cons 3 empty))
,但我不明白这里使用cons
after的代码empty
。不是cons
为数字而建的吗?怎么能cons
接受2个论点?如果他们可以接受 2 个论点,它如何评估它们?有人可以请翻译后的代码[(empty? lst) empty]
吗?
lisp - 如何仅使用 cons 对实现嵌套列表?
我正在制作一个纯 Lisp 解释器,并尝试编写一个阅读器将列表转换为缺点对。
从我读过的列表来看,内部是这样的缺点对:
但我不知道如何使用 cons 对实现嵌套列表,如下所示
这应该怎么看起来像未缩写?
lisp - 如何仅使用 cons 将值附加到现有列表?
在 lisp 中,我试图将值附加到仅使用基本功能的列表中:setq cons car 和 cdr。
我可以向后创建列表,但我很难弄清楚如何按顺序推送它们,怎么做?
list - Scheme Cons 从 2 个列表中创建一个列表
所以,我在 Scheme 中有一个学校项目(在 Dr.Racket 环境中工作),这是一个短期的项目(请注意,我没有要求你们中的任何人为我做功课)。
我有 2 个列表:一个是 6 个或更多字符,另一个是 3 个字符。
我们要做的是以如下所示的方式组合它们:
对此:
现在,我对如何做到这一点有了一个想法,其中包括在使用 cons 将字母“附加”之后,将其“切割”成零件并使用 cons 将它们重新组合在一起。
不过,这是我的问题:我制作了一个应该将 2 个列表构造为一个的函数,但它不起作用,并给了我在函数定义中使用的名称。
这是代码:
结果:
我做错了什么,我该如何解决?
append - 方案:如何产生'(5 . (5))
我尝试了各种 cons 和 append 的组合来产生 '(5 . (5)) 但我做不到。有什么办法吗?
clojure - clojure: no cons cells
i heard that clojure does not have cons cells as of most lisp languages.
does that mean a clojure list does not end with an empty list?
could anyone explain what that exactly means?