プログラミングGauche 6.5 簡単なリスト処理 練習問題

プログラミングGaucheの練習問題(p56)を解く。

リストの長さを計算する手続き length

(define (length lis)
  (define (iter lis result)
    (if (null? lis)
        result
        (iter (cdr lis) (+ result 1))))
  (iter lis 0))

(length '(1 2 3 4 5))
gosh> 5

引数にリストをとり、条件を満たす要素のみからなるリストを返す手続き filter

(define (filter pred lis)
  (if (null? lis)
      '()
      (if (pred (car lis))
          (cons (car lis) (filter pred (cdr lis)))
          (filter pred (cdr lis)))))

(filter odd? '(4 6 7 4 3 2 9))
gosh> (7 3 9)
プログラミングGauche
プログラミングGauche

posted with amazlet at 08.11.14
Kahuaプロジェクト
オライリージャパン
売り上げランキング: 22775
«
»