2014年3月17日月曜日

開発環境

プログラミングGauche(Kahuaプロジェクト (著)、 川合 史朗 (監修)、オライリージャパン)の9章(状態の管理)、9.1(集合)、練習問題(p.112)を解いてみる。

その他参考書籍

練習問題(p.112)

コード(BBEdit, Emacs)

sample.scm

#!/usr/bin/env gosh
;; -*- coding: utf-8 -*-

(define (delete-1 elt lis . options)
  (let-optionals* options ((cmp-fn equal?))
                  (define (loop lis)
                    (cond ((null? lis) lis)
                          ((cmp-fn elt (car lis)) (cdr lis))
                          ((eq? (delete-1 elt (cdr lis))
                                (cdr lis))
                           lis)
                          (else
                           (cons (car lis) (loop (cdr lis))))))
                    (loop lis)))

(use gauche.test)
(let ((data (list 1 2 3 4 5)))
  (test* "non-copy delete-1" data (delete-1 6 data) eq?))

入出力結果(Terminal(gosh), REPL(Read, Eval, Print, Loop))

$ ./sample.scm
test non-copy delete-1, expects (1 2 3 4 5) ==> ok
$

0 コメント:

コメントを投稿