2014年3月13日木曜日

開発環境

プログラミングGauche(Kahuaプロジェクト (著)、 川合 史朗 (監修)、オライリージャパン)の6章(リスト)、6.5(簡単なリスト処理)、練習問題を解いてみる。

その他参考書籍

練習問題

コード(BBEdit, Emacs)

sample.scm

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

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

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

(for-each (lambda (lis)
            (print lis " length: " (length lis)))
          '(() (1) (1 2) (1 2 3 4 5 6 7 8 9 10)))

(for-each (lambda (lis)
            (print lis " odds: " (filter odd? lis)))
          '(() (1) (2) (1 3 5 7) (2 4 6 8) (1 2 3 4 5 6 7 8 9 10)))

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

$ ./sample.scm
() length: 0
(1) length: 1
(1 2) length: 2
(1 2 3 4 5 6 7 8 9 10) length: 10
() odds: ()
(1) odds: (1)
(2) odds: ()
(1 3 5 7) odds: (1 3 5 7)
(2 4 6 8) odds: ()
(1 2 3 4 5 6 7 8 9 10) odds: (1 3 5 7 9)
$

0 コメント:

コメントを投稿