- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
(define ..
(lambda (start stop)
(cond ((> (add1 start) stop) (quote ()))
((eq? (add1 start) stop) (sub1 stop))
(else (cons start (.. (add1 start) stop))))))
我定义了一个简单的范围函数。目的是为了
(.. 1 5) --> (1 2 3 4)
相反,我的元组中添加了一个奇怪的句点,我不知道为什么:
(.. 1 5) --> (1 2 3 . 4)
我不明白为什么会这样。感谢任何帮助
最佳答案
Scheme 中的列表要么是空列表 ()
(在某些 Lisp 中也称为 nil
),要么是 car
(也称为 first
)是列表的一个元素,其 cdr
(也称为 rest
)是列表的其余部分(即另一个列表),或终止列表的原子。常规终止符是空列表()
;以 ()
结尾的列表被称为“适当的列表”。由任何其他原子终止的列表称为“不正确的列表”。列表 (1 2 3 4 5)
包含元素 1、2、3、4 和 5,并以 ()
结束。你可以通过
(cons 1 (cons 2 (cons 3 (cons 4 (cons 5 ())))))
现在,当系统打印一个cons cell时,一般情况下是打印它
(car . cdr)
例如,(cons 1 2)
的结果打印为
(1 . 2)
由于列表是由 cons 单元构成的,因此您也可以将此表示法用于列表:
'(1 2 3 4 5) ==
'(1 . (2 . (3 . (4 . (5 . ())))))
不过,这相当笨拙,所以大多数 lisps(据我所知)都有打印 cons 单元格的特殊情况:如果 cdr
是一个列表(另一个 cons 单元格,或者 ()
),那么就不要打印 .
,也不要打印 cdr
周围的圆括号(否则它会有,因为这是一个列表)。所以,如果您看到类似
(1 2 3 . 4)
这意味着您有一个不正确的列表,该列表由原子 4
终止。它具有结构
(1 . (2 . (3 . 4)))
现在的问题是:列表构造在您的代码中哪里出错了? ..
总是应该返回一个正确的列表,所以让我们看一下情况: 第一种情况总是返回一个正确的列表(空列表):
((> (add1 start) stop) (quote ()))
第二种情况看起来它可以返回一些不是列表的东西(假设 (sub1 stop) == (- stop 1)
):
((eq? (add1 start) stop) (sub1 stop))
现在,如果 ..
正常运行,那么第三种情况将始终返回一个正确的列表(因为 (cons x y)
是一个正确的列表,如果 y
是):
(else (cons start (.. (add1 start) stop)))
让您的第二个案例返回一个列表,您应该已经准备就绪。
关于lisp - Lisp 中的递归范围添加句点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16379657/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!