プログラミングGauche p.112 の練習問題
- 作者: Kahuaプロジェクト,川合史朗
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/03/14
- メディア: 大型本
- 購入: 22人 クリック: 713回
- この商品を含むブログ (244件) を見る
気になったので、ちょっと書いてみました。こんなかんじかなぁ?
(define (delete-1 elt lis . options) (let-optionals* options ((cmp-fn equal?)) (define (loop lis) (cond ([null? lis] '()) ([cmp-fn elt (car lis)] (cdr lis)) ([loop (cdr lis)] => (lambda (tail) (if (eq? (cdr lis) tail) lis (cons (car lis) tail)))))) (loop lis)))
p.115 の traverse を使うならこう。
(define delete-1 (traverse '() car cdr (lambda (loop lis) (let ((tail (loop (cdr lis)))) (if (eq? (cdr lis) tail) lis (cons (car lis) tail))))))