问题标签 [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.

0 投票
1 回答
722 浏览

list - 模式匹配 x::xs 没有在 F# 中相应地拆分列表?

我是 F# 的新手,我正在尝试编写一个方法 split 将列表分成两部分。它需要一个元组,第一个元素是要拆分的元素数,第二个元素是列表。例如, split (2, [1;2;3;4;5;6]) 应该返回 ([1;2], [3;4;5;6]),

这是我到目前为止所拥有的,但由于某种原因,它将元组的第二个元素作为没有头部的原始列表返回。我不明白这一点,因为我认为 x::xs 会自动使 x 成为头元素,而 xs 成为列表的其余部分,这意味着每个递归调用都会占用前一个列表的尾部并切断第一项。

0 投票
1 回答
446 浏览

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 !或任何使过程更容易但想了解递归在这种情况下可以工作的方式:)。

0 投票
1 回答
141 浏览

functional-programming - 在 sml 中解释 []::[], []::[]::[]

我想问一下在 SML/NJ 中如何[]::[]以及如何在概念上进行解释。[]::[]::[]

我的想法 :

我认为这[]::[]会产生错误或生成一个空列表,但实际上它会生成val it = [[]] : 'a list list.

在我知道[]::[]生成之后[[]] : 'a list list,我认为[]::[]::[]会生成[[[]]] : 'a list list list,但实际上它会生成[[],[]] : 'a list list

0 投票
1 回答
88 浏览

list - 为什么 :: 仅适用于列表?

使::特定List于所有子类而不适用于所有子类的原因是Seq什么?举一个具体的例子:

所有序列都是有序的,并且有“头”和“尾”的概念,那么为什么集合库的实现者只提供::List? +:如果我想能够与 all 一起工作,为什么必须使用Seq

编辑:我理解性能论点——几乎每次我问这个问题时都会得到它——但我在很大程度上不同意它。想象一个不同的集合库,其中只有一件事发生了变化:删除::from List。会发生什么变化?

  • 我仍然可以使用+:诸如.Nil"A" +: "B" +: Nil
  • 我仍然可以优雅地使用模式匹配+:来提取列表的不同部分。例如case head +: tail => println(head)
  • 有一个统一的方法来构建和模式匹配的所有子类Seq。这消除了使用 linter 来查找细微错误的需要,例如我在getTail.

老实说,我没有看到独特的方法如何List使任何事情变得更容易、更清晰或比使用+:. 如果是这样的话,那么我认为没有理由::具体到List. 鉴于此,我根本看不到存在的理由::

0 投票
1 回答
591 浏览

scheme - 在球拍/方案中的参数前使用 cons

我知道cons是为了构建对,比如(cons 2 (cons 3 empty)),但我不明白这里使用consafter的代码empty。不是cons为数字而建的吗?怎么能cons接受2个论点?如果他们可以接受 2 个论点,它如何评估它们?有人可以请翻译后的代码[(empty? lst) empty]吗?

0 投票
2 回答
371 浏览

lisp - 如何仅使用 cons 对实现嵌套列表?

我正在制作一个纯 Lisp 解释器,并尝试编写一个阅读器将列表转换为缺点对。

从我读过的列表来看,内部是这样的缺点对:

但我不知道如何使用 cons 对实现嵌套列表,如下所示

这应该怎么看起来像未缩写?

0 投票
4 回答
2936 浏览

lisp - 如何仅使用 cons 将值附加到现有列表?

在 lisp 中,我试图将值附加到仅使用基本功能的列表中:setq cons car 和 cdr。

我可以向后创建列表,但我很难弄清楚如何按顺序推送它们,怎么做?

0 投票
1 回答
1347 浏览

list - Scheme Cons 从 2 个列表中创建一个列表

所以,我在 Scheme 中有一个学校项目(在 Dr.Racket 环境中工作),这是一个短期的项目(请注意,我没有要求你们中的任何人为我做功课)。

我有 2 个列表:一个是 6 个或更多字符,另一个是 3 个字符。

我们要做的是以如下所示的方式组合它们:

对此:

现在,我对如何做到这一点有了一个想法,其中包括在使用 cons 将字母“附加”之后,将其“切割”成零件并使用 cons 将它们重新组合在一起。

不过,这是我的问题:我制作了一个应该将 2 个列表构造为一个的函数,但它不起作用,并给了我在函数定义中使用的名称。

这是代码:

结果:

我做错了什么,我该如何解决?

0 投票
2 回答
82 浏览

append - 方案:如何产生'(5 . (5))

我尝试了各种 cons 和 append 的组合来产生 '(5 . (5)) 但我做不到。有什么办法吗?

0 投票
4 回答
2293 浏览

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?