プログラミングGauche 8.3 真偽値を扱う手続き 練習問題
2009年05月06日
プログラミングGauche 練習問題(p101)を解く。
手続き any-pred
と every-pred
を自分で定義する。
any-pred
;; 最初に思いついた解答 (define (any-pred . preds) (define (iter preds x) (if (null? preds) #f (if ((car preds) x) #t (iter (cdr preds) x)))) (lambda (x) (iter preds x))) ;; apply を使ったバージョン (define (any-pred . preds) (lambda (x) (cond ((null? preds) #f) (((car preds) x) #t) (else ((apply any-pred (cdr preds)) x)))))
実行結果
(define positive-or-integer? (any-pred integer? positive?)) (positive-or-integer? 4) gosh> #t (positive-or-integer? 4.0) gosh> #t (positive-or-integer? 4.1) gosh> #t (positive-or-integer? -4.1) gosh> #f (positive-or-integer? -4) gosh> #t
every-pred
;; 最初に思いついた解答 (define (every-pred . preds) (define (iter preds x) (if (null? preds) #t (if ((car preds) x) (iter (cdr preds) x) #f))) (lambda (x) (iter preds x))) ;; apply を使ったバージョン (define (every-pred . preds) (lambda (x) (cond ((null? preds) #t) (((car preds) x) ((apply every-pred (cdr preds)) x)) (else #f))))
実行結果
(define positive-integer? (every-pred integer? positive?)) (positive-integer? 4) gosh> #t (positive-integer? 4.0) gosh> #t (positive-integer? 4.1) gosh> #f (positive-integer? -4.1) gosh> #f (positive-integer? -4) gosh> #f
プログラミングGauche
posted with amazlet at 08.11.14
Kahuaプロジェクト
オライリージャパン
売り上げランキング: 22775
オライリージャパン
売り上げランキング: 22775