Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/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
List I';我试图在racket(delete all xx elt)中编写一个函数,该函数返回一个新列表,其中删除了所有出现的elt_List_Lisp_Scheme_Racket - Fatal编程技术网

List I';我试图在racket(delete all xx elt)中编写一个函数,该函数返回一个新列表,其中删除了所有出现的elt

List I';我试图在racket(delete all xx elt)中编写一个函数,该函数返回一个新列表,其中删除了所有出现的elt,list,lisp,scheme,racket,List,Lisp,Scheme,Racket,这是我所拥有的,但只有当elt出现在列表的开头时,它才起作用 (define (delete-all xx elt) (cond ((null? xx) null) ((equal? elt (car xx)) (delete (cdr xx) elt)))) 您缺少了一个额外的情况:如果当前元素不是要删除的元素,会发生什么?这里是需要做什么的一般想法,我不会给你一个直接的答案,因为这看起来像是家庭作业(你应该在问题中使用家庭作业标签)。最好自己填空: (define (d

这是我所拥有的,但只有当elt出现在列表的开头时,它才起作用

(define (delete-all xx elt)
  (cond ((null? xx) null)
        ((equal? elt (car xx)) (delete (cdr xx) elt))))

您缺少了一个额外的情况:如果当前元素不是要删除的元素,会发生什么?这里是需要做什么的一般想法,我不会给你一个直接的答案,因为这看起来像是家庭作业(你应该在问题中使用
家庭作业
标签)。最好自己填空:

(define (delete-all xx elt)
  (cond ((null? xx)            ; base case: empty list
         null)                 ; return the empty list
        ((equal? elt (car xx)) ; current element needs to be removed
         <???>)                ; ignore current element and make recursive call
        (else                  ; current element needs to be added to the list
         (<???> (car xx) <???>)))) ; add current element and make recursive call
(定义(删除所有xx elt)
(cond((null?xx);基本情况:空列表
null);返回空列表
((等于elt(车辆xx));需要移除当前元件
);忽略当前元素并进行递归调用
(否则;需要将当前元素添加到列表中。)
((汽车xx));添加当前元素并进行递归调用

另外,不要在回答中调用
delete
,因为这是一个递归解决方案,所以您需要调用
delete all
,而是使用适当的参数来保持递归,直到达到基本情况为止。提示:关于
cons
cdr
呢?

您也可以使用
filter
,如果允许您使用:

(define (delete-all xx elt)
  remove* xx elt)

(定义(删除所有xx elt)(cond((null?xx)null)((equal?elt(car xx))(删除所有(cdr xx)elt))(其他(cons(car xx)(删除所有(cdr xx)elt()())))感谢您的帮助,非常感谢。我从代码中找出了错误。永远不会真正知道在一个数据库中可以进行多个递归调用function@Obinna太好了!:)请不要忘记通过点击左边的复选标记来接受正确的答案。我想Obinna只是想用更简单的库函数来解决这个问题(看起来像是一个课程问题)。使用remove*会作弊,很难看出你的答案是认真的。在OP code中,
xx
是列表,而
elt
是所有实例都应该删除的元素。
(define (delete-all xx elt)
  (filter (lambda (y) (not(eq? xx y))) elt))