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 清除方案中的列表_List_Scheme - Fatal编程技术网

List 清除方案中的列表

List 清除方案中的列表,list,scheme,List,Scheme,如果james与list的一个元素匹配,那么(1,2,3)(4,5,6)(8,5 6) 必须清楚。我只需要清除(1 2 3),我想清除(4 5.6)(8.5.6)一个接一个地递归。但是我不能成功。 我需要紧急援助 您编写的clear过程无效,remove将创建一个新列表,其中删除的元素不存在,但原始元素保持不变。请尝试以下方法: (define ls2 '((james (1 2 3) (4 5 6) (8 5 6)) (daren (7 8 9) (2 6 4))

如果james与list的一个元素匹配,那么(1,2,3)(4,5,6)(8,5 6) 必须清楚。我只需要清除(1 2 3),我想清除(4 5.6)(8.5.6)一个接一个地递归。但是我不能成功。 我需要紧急援助


您编写的
clear
过程无效,
remove
将创建一个新列表,其中删除的元素不存在,但原始元素保持不变。请尝试以下方法:

(define ls2 '((james (1 2 3) (4 5 6) (8 5 6))
              (daren (7 8 9) (2 6 4))
              ))    
(define (delete name lst clear)
      (if (equal? (caar ls2) name) (clear (cdar lst)) 
       (delete name (cdr lst) clear)))

(define (clear lst)
      (if (null? lst) #t (remove (car lst) lst)))

(delete 'james ls2 clear)
这就是它的工作原理:它创建了一个新的列表,其中元素被删除,原始列表保持不变-这就是我们在Scheme中编写程序的方式:

(define (delete name lst)
  (cond ((null? lst) '())
        ((equal? (caar lst) name)        ; if there's a match
         (cons (list (caar lst))         ; clear all elements at once
               (delete name (cdr lst)))) ; and advance recursion
        (else (cons (car lst) 
                    (delete name (cdr lst))))))

非常感谢你所做的一切。你的帮助让我松了一口气:)
(define lst '((james (1 2 3) (4 5 6) (8 5 6))
              (daren (7 8 9) (2 6 4))))

(delete 'james lst)
=> '((james) (daren (7 8 9) (2 6 4)))