2014年3月31日月曜日

開発環境

プログラミングGauche(Kahuaプロジェクト (著)、 川合 史朗 (監修)、オライリージャパン)の第3部(実用的なプログラミング)、9章(状態の管理)、9.1(集合)、delete手続きを書いてみる。

その他参考書籍

delete手続き

コード(BBEdit, Emacs)

sample.scm

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

;; これまでに書いた手続き
(load "./procedures.scm")

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

(for-each (lambda (lis)
            (for-each print
                      (list (delete-1 2 lis)
                            (delete 2 lis))))
          (list (list 1 2 3 4 5 1 2 3 4 5)
                (list 2 1 3 4 5 1 3 4 5 2)
                (list 1 2 2 3 4 5)
                (list)
                (list 2 2 3 4 5)
                (list 3 4 5 2 2)))

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

$ ./sample.scm
(1 3 4 5 1 2 3 4 5)
(1 3 4 5 1 3 4 5)
(1 3 4 5 1 3 4 5 2)
(1 3 4 5 1 3 4 5)
(1 2 3 4 5)
(1 3 4 5)
()
()
(2 3 4 5)
(3 4 5)
(3 4 5 2)
(3 4 5)
$

0 コメント:

コメントを投稿