by shigemk2

当面は技術的なことしか書かない

リスト遊び 5-3 削除*

リスト遊び 5-2 置換* - by shigemk2

例によって、リストがあったらリストの残りに対してリストを返すようにする。

(defun del (x lst)
  (cond
   ((null lst) nil)
   ((eq (car lst) x) (del x (cdr lst)))
    (t (cons (car lst) (del x (cdr lst))))))
(del 1 '(1 2 3))
(2 3)
(del 1 '((1) 2 3))
((1) 2 3)

(defun del* (x lst)
  (cond
   ((null lst) nil)
   ((consp (car lst))
    (cons (del* x (car lst))
	  (del* x (cdr lst))))
   ((eq (car lst) x)
    (del* x (cdr lst)))
   (t (cons (car lst) (del* x (cdr lst))))))
del*
(del* 1 '(1 (1) (1 2) (1 (1 3))))
(nil (2) ((3)))

リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)

リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)