可用功能有限的方案列表

时间:2013-04-13 06:50:00

标签: list scheme

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

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

2 个答案:

答案 0 :(得分:1)

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

(cons 0 (cons 10 '()))

一般情况下,您始终可以使用(cons new-element old-list)在正确的列表前添加内容,然后您将获得一个新的正确列表。非空的正确列表的cdr本身始终是正确的列表。 car可以是任何内容。

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

答案 1 :(得分:0)

一般情况下: 您可以为自己定义所有内置过程,而不是“特殊形式”。

定义您自己的

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

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