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。