Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 在racket中将列表解压缩为两个单独的列表_Scheme_Racket - Fatal编程技术网

Scheme 在racket中将列表解压缩为两个单独的列表

Scheme 在racket中将列表解压缩为两个单独的列表,scheme,racket,Scheme,Racket,我正在尝试编写一个名为unzip的函数,它获取一个列表,并计算为一个包含两个列表的列表,其中包含原始列表的交替元素 到目前为止,这就是我所拥有的: (define (unzip lst) (if (null? lst) '() (... 这就是它的工作原理: (解压’(1a2b3c))应计算为((123b)(abc))对不起,您所拥有的东西走错了方向。(想想如果输入为空,结果应该是什么。)与我对上一个问题的回答类似,这里有一个基本解决方案: (defin

我正在尝试编写一个名为unzip的函数,它获取一个列表,并计算为一个包含两个列表的列表,其中包含原始列表的交替元素

到目前为止,这就是我所拥有的:

(define (unzip lst)
    (if (null? lst)
        '()
        (...
这就是它的工作原理:


(解压’(1a2b3c))应计算为((123b)(abc))

对不起,您所拥有的东西走错了方向。(想想如果输入为空,结果应该是什么。)与我对上一个问题的回答类似,这里有一个基本解决方案:

(define (unzip l)
  (if (null? l) ???
      (let ([next (unzip ???)])
        (list (cons ??? ???) ???))))

适当地填写
s。(是的,我的解决方案经过测试,可用于奇数和偶数输入。)

next
不是一个函数。它是在
let
中定义的变量。现在,考虑一下它在逻辑上应该做什么。(我把括号改成了方形,更符合球拍的风格。希望这能让事情变得更加明显。)是的,
下一步
确实是
(解压(cdr l))
。现在,您应该考虑如何在给定旧结果的情况下组合新结果。试试这个:想想结果是什么,对于一个空输入。然后,对于单个元素输入。然后是2个元素。等等您将很快了解到每一步需要做什么。
(cons(car l)?)
部分是正确的。
(cdr l)
部件不可用。你能找出原因吗?(另外,提示:至少有一个子表达式将涉及
下一个
变量。否则,我没有必要首先定义它。)恭喜!如果您想将您的答案与我的答案进行比较,请看以下内容: