開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Scheme (プログラミング言語)
- Gauche (処理系)
プログラミングGauche(Kahuaプロジェクト (著)、 川合 史朗 (監修)、オライリージャパン)の6章(リスト)、6.5(簡単なリスト処理)、練習問題を解いてみる。
その他参考書籍
- Scheme手習い(Daniel P. Friedman (著), Matthias Felleisen (著), 元吉 文男 (翻訳), 横山 晶一 (翻訳), オーム社)
- 計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))
- Instructor's Manual to Accompany Structure & Interpretation of Computer Programs
練習問題
コード(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 コメント:
コメントを投稿