プログラミングGaucheのサポートページに模範解答があるじゃないっすか!
delete-1の解答をみてみると、結構違うじゃーん。 ><
模範解答
(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)] [else (let ((tail (loop (cdr lis)))) (if (eq? tail (cdr lis)) lis (cons (car lis) tail)))])) (loop lis)))http://www.kahua.org/cgi-bin/viewvc.cgi/ProgrammingGauche/trunk/chap9/exercise9.1.scm?view=markup
time手続きで所要時間を比較してみたいけど、戻り値ぜんぶ表示しちゃうしなー。
戻り値のリストが長いと、ヒドいことになる。
やってみた!(2009/03/08追記)
timeは複数の式を受け取れることをコメントで教えてもらったので、やってみた。
example-delete-1は模範解答で、my-delete-1が自前で定義したもの(id:yagiey:20090307:1236410685の最後のdelete-1)。
gosh> (define *sqn* (iota 1000000 1)) *sqn* gosh> (time (example-delete-1 100 *sqn*) #f) ;(time (example-delete-1 100 *sqn*) #f) ; real 0.000 ; user 0.000 ; sys 0.000 #f gosh> (time (my-delete-1 100 *sqn*) #f) ;(time (my-delete-1 100 *sqn*) #f) ; real 0.000 ; user 0.000 ; sys 0.000 #f
あれっ?