Scheme 如何将列表转换为其元素

Scheme 如何将列表转换为其元素,scheme,racket,Scheme,Racket,这一定很容易做到,但我是新手,不知道如何做到: 我有一个清单1234,想把它转换成1234 或者有没有办法将其构建为1234。我正在使用 cons '(element) call-function 要在函数内部递归地构建它,请尝试以下操作: (map list '(1 2 3 4)) 从你的文本中,我看到你做了“元素”。问题是,引用的所有东西都是你所看到的。因此,如果元素恰好是一个变量,它将不会因为引号而展开 获取包含一个元素的列表的正确方法是使用list。list元素,以获取变量元素在列

这一定很容易做到,但我是新手,不知道如何做到:

我有一个清单1234,想把它转换成1234

或者有没有办法将其构建为1234。我正在使用

 cons '(element) call-function
要在函数内部递归地构建它,请尝试以下操作:

(map list '(1 2 3 4))

从你的文本中,我看到你做了“元素”。问题是,引用的所有东西都是你所看到的。因此,如果元素恰好是一个变量,它将不会因为引号而展开

获取包含一个元素的列表的正确方法是使用list。list元素,以获取变量元素在列表中的唯一元素。但是,在您自己的递归过程中不需要这样做:

(define (listify lst)
  (if (null? lst)                  ; if lst is null we are done
      '()                          ; evaluate to the empty list
      (cons (list (car lst))       ; else we make a list with the first element
            (listify (cdr lst))))) ; and listify the rest of the list too
现在,大多数过程都有助于完成论证,但由于这是一件常见的事情,我们可以将高阶过程与foldr结合使用,以便您只关注此链中的元素将发生什么,并与过程的其余部分保持一致:

(define (listify lst)
  (foldr (lambda (e acc)
           (cons (list e) ; chain this element wrapped in a list 
                 acc))    ; with the result from the rest of the list
         '()              ; initiate with an empty list
         lst))            ; go through lst
当然,由于我们对列表中的每个元素都做了一些事情,而使用map并没有什么特别之处,所以我们只需要提供如何处理每个元素,而不是告诉我们如何将列表中的链连接在一起

(define (listify lst)
  (map list lst))      ; make a new list by applying a list of each element
它实际上是zip的单参数版本:


好了。尽可能简单

你说1234是什么意思?4个单独的值?如果他们的号码不固定,我不确定这是否可能。或者一个列表,其中每个元素是一个带有一个数字的列表,意思是1 2 3 4?或者别的什么?我想我指的是4个独立的值。你能得到的最多的是“1234或甚至应用值映射列表”1 2 3 4。
(require srfi/1)
(zip '(1 2 3 4))        ; ==> ((1) (2) (3) (4))
(zip '(1 2 3) '(a b c)) ; ==> ((1 a) (2 b) (3 c))