開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Scheme (プログラミング言語)
- Gauche (処理系)
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の2(データによる抽象の構築)、2.4(抽象データの多重表現)、2.4.3(データ主導プログラミングと加法性)、メッセージパッシング、問題 2.75.を解いてみる。
その他参考書籍
- Instructor's Manual to Accompany Structure & Interpretation of Computer Programs
- プログラミングGauche (Kahuaプロジェクト (著), 川合 史朗 (監修), オライリージャパン)
問題 2.75.
コード(BBEdit, Emacs)
sample.scm
#!/usr/bin/env gosh ;; -*- coding: utf-8 -*- ;; これまでに書いた手続き (load "./procedures.scm") (define (make-from-mag-ang r a) (define (dispatch op) (cond ((eq? op 'real-part) (* r (cos a))) ((eq? op 'imag-part) (* r (sin a))) ((eq? op 'magnitude) r) ((eq? op 'angle) a) (else (error "Unknown op -- MAKE-FROM-MAG-ANG" op)))) dispatch) (define pi 3.14) (define a (make-from-mag-ang 1 0)) (define b (make-from-mag-ang 2 0)) (define c (make-from-mag-ang 0 (/ pi 2))) (define d (make-from-mag-ang 0 pi)) (define e (make-from-mag-ang 2 (/ pi 6))) (define f (make-from-mag-ang (sqrt 2) (/ pi 4))) (define g (make-from-mag-ang 2 (/ pi 3))) (define h (make-from-mag-ang 2 (* 5 (/ pi 6)))) (define i (make-from-mag-ang (sqrt 2) (* 5 (/ pi 4)))) (define j (make-from-mag-ang 2 (* 5 (/ pi 3)))) (for-each (lambda (x) (print x "\n" "実部: " (x 'real-part) " 虚部: " (x 'imag-part) " 絶対値: " (x 'magnitude) " 偏角: " (x 'angle))) (list a b c d e f g h i j))
入出力結果(Terminal(gosh), REPL(Read, Eval, Print, Loop))
$ ./sample.scm #<closure (make-from-mag-ang dispatch)> 実部: 1.0 虚部: 0.0 絶対値: 1 偏角: 0 #<closure (make-from-mag-ang dispatch)> 実部: 2.0 虚部: 0.0 絶対値: 2 偏角: 0 #<closure (make-from-mag-ang dispatch)> 実部: 0.0 虚部: 0.0 絶対値: 0 偏角: 1.57 #<closure (make-from-mag-ang dispatch)> 実部: 0.0 虚部: 0.0 絶対値: 0 偏角: 3.14 #<closure (make-from-mag-ang dispatch)> 実部: 1.732316188810926 虚部: 0.9995402052862048 絶対値: 2 偏角: 0.5233333333333333 #<closure (make-from-mag-ang dispatch)> 実部: 1.0003980841198834 虚部: 0.9996017573460277 絶対値: 1.4142135623730951 偏角: 0.785 #<closure (make-from-mag-ang dispatch)> 実部: 1.0009193780164116 虚部: 1.7315196789846887 絶対値: 2 偏角: 1.0466666666666666 #<closure (make-from-mag-ang dispatch)> 実部: -1.7307220711389157 虚部: 1.0022979160272765 絶対値: 2 偏角: 2.6166666666666667 #<closure (make-from-mag-ang dispatch)> 実部: -1.0019888339967062 虚部: -0.9980072026523263 絶対値: 1.4142135623730951 偏角: 3.9250000000000003 #<closure (make-from-mag-ang dispatch)> 実部: 0.9953988875273785 虚部: -1.7346991251249473 絶対値: 2 偏角: 5.233333333333333 $
0 コメント:
コメントを投稿