delete-1を名前付きletで書き直し
やってみた。
gosh> (use gauche.test) #<undef> gosh> (define delete-1 (lambda (elt lis . options) (let-optionals* options ((cmp-fn equal?)) (let loop ((lis lis)) (cond ((null? lis) lis) ((cmp-fn elt (car lis)) (cdr lis)) (else (let ((tail (loop (cdr lis)))) (if (eq? tail (cdr lis)) lis (cons (car lis) tail))))))))) delete-1 gosh> (let ((data (list 1 2 3 4 5))) (test* "non-copy delete-1" data (delete-1 6 data) eq?)) test non-copy delete-1, expects (1 2 3 4 5) ==> ok #<undef>
っていうか、読み進めろってw
いつまでやってんだよ、delete-1。