0

有没有办法在 Scheme 中创建或添加列表,只有这些函数可用:equal?、car、cdr、cons、cond、if、quote、+、*、null?、符号?,整数?,任何汽车/cdr 变体,定义,让。(您会注意到不允许使用任何#list 或#append 调用)。

我已经尝试了几种不同的方式,但它只是给出了像 '(0 . 10) 这样的东西,而不仅仅是 (0 10) 这将是理想的。是的,这是更大任务的一部分。

4

2 回答 2

1

在 Scheme 中,“正确的列表”以空列表结尾。所以,你可以'(0 10)这样:

(cons 0 (cons 10 '()))

一般来说,您总是可以使用 将某些内容添加到正确列表的前面(cons new-element old-list),并且您将获得一个新的正确列表。cdr非空正确列表的 本身始终是正确列表。car可以是任何东西。

这个词cons是“构造”的缩写:它是构造列表的最原始的过程。

于 2013-04-13T07:35:42.850 回答
0

一般来说:您可以为自己定义所有不是“特殊形式”的内置程序。

定义你自己的

(define (append-my List1 List2)
   (if (null? List1)
       list2
       (cons (car List1) 
             (append-my (cdr List1) List2))))

在“计算机程序的结构和解释”一书中,您可以找到许多内置过程的定义。每个对 Scheme 或 Lisp 感兴趣的人都应该学习 SICP 的前三章。

于 2018-02-11T09:00:06.750 回答