Scheme 在方案中使用cons、list、append

Scheme 在方案中使用cons、list、append,scheme,racket,Scheme,Racket,我需要编写一个代码,将一个元素添加到作为输入的列表中,并返回一个新列表而不是旧列表。。之后,我会做递归,我需要新的列表。。。下面的代码工作正常。。然而我试图减少所有设置!那是因为迷惑了我,有时我犯了我无法解决的错误 没有设置,我如何执行此操作?我只尝试了cons、list和append,但没有一个能完成这项工作 (set! list (cons element list)) 谢谢。只要(cons元素列表)就足够了 您的代码正在更改列表变量的内容。我们通常不会以函数式的方式这样做,唯一的方法是使

我需要编写一个代码,将一个元素添加到作为输入的列表中,并返回一个新列表而不是旧列表。。之后,我会做递归,我需要新的列表。。。下面的代码工作正常。。然而我试图减少所有设置!那是因为迷惑了我,有时我犯了我无法解决的错误

没有设置,我如何执行此操作?我只尝试了cons、list和append,但没有一个能完成这项工作

(set! list (cons element list))
谢谢。

只要
(cons元素列表)
就足够了

您的代码正在更改
列表
变量的内容。我们通常不会以函数式的方式这样做,唯一的方法是使用
set和您一样

但要返回新列表,它上面有一个新元素,调用
(cons element list)
就足够了:

...
(let ((newlist (cons element oldlist)))
  .....
  ..... use newlist and oldlist as needed
只要
(cons元素列表)
就足够了

您的代码正在更改
列表
变量的内容。我们通常不会以函数式的方式这样做,唯一的方法是使用
set和您一样

但要返回新列表,它上面有一个新元素,调用
(cons element list)
就足够了:

...
(let ((newlist (cons element oldlist)))
  .....
  ..... use newlist and oldlist as needed
这就是调用
(cons e l)
所做的。它返回新的列表。如果在函数中需要它,请编写:
(define(addel)(consel))
并调用它
。。。。(添加EL).
。但是你可以直接调用
。。。(cons e l).
相反。这就是调用
(cons e l)
所做的。它返回新的列表。如果在函数中需要它,请编写:
(define(addel)(consel))
并调用它
。。。。(添加EL).
。但是你可以直接调用
。。。(cons e l).