scheme - 为什么我的结果中会出现“列表”一词?
问题描述
对 Scheme 来说非常新,所以对于一个基本问题我很抱歉。每当我打印出一些东西作为测试时,我的结果总是在打印的列表中包含单词“list”。
我的代码:
(define get-lower-half
(lambda (lst n)
(if (< n (quotient (length lst) 2))
(cons (list-ref lst n) (get-lower-half lst (+ n 1)))
'())))
(get-lower-half '(1 2 3 4 5) 0)
我的结果是:
(list 1 2)
而不仅仅是
(1 2)
我在网上找到的使用 cons 的例子没有这个问题,我到底做错了什么?我使用 DrRacket 作为我的 IDE,中级学生使用 Lambda 作为语言。
解决方案
我很确定您期待的是'(1 2)
(列表),而不是(1 2)
.
(1 2)
在 Racket 或中间语言中不是一个有效的过程。
在中间语言中,列表是用列表过程表示的,(list 1 2)
而'(1 2)
不像在常规的 Racket 中那样。您所看到的是常规的中间语言行为。
推荐阅读
- java - 在 Java 中,您可以遍历嵌套 zip 文件的内容而不膨胀父级吗?
- javascript - require() 发现 process.version 未定义
- c - 使用管道和 read() write() 进行 SSH 通信
- python - Django REST Framework lookup_field to ReadOnlyField with source
- matlab - 在 Matlab 中使用 Curl (Windows 10) 请求给出错误消息
- javascript - 真的——window.document和window里面的document是不一样的。铬合金
- python-3.x - 美丽的汤奇怪地返回'/photo-missing.png'
- reactjs - 用redux sgas直接调用生成器方法可以吗
- sql - 具有特定值的计数列
- azure - 通过 Terraform 检索 VNET 的位置