SICPを読む(83) 2.4.2 タグつきデータ
まだまだ、解説が続く。
タグつきデータ
複素数表現を「型タグ」で表現しようというお話し。
前回のが、
struct complex-rectangular { int type; double real; double imag; }; struct complex-poler { int type; double magnitude; double angle; };
となった。まぁまぁ無難な解決法。
僕のScheme実装もこんな感じデス。
もうちょっと抽象化
どうも同じような表現が続いているので、
(define (switcher x rectangler polar) ((cond ((rectanglar? x) rectangler) ((polar? x) polar) (else (error "undefind type" x))) (contents x))) (define (real-part x) (switcher x real-part-rectangular real-part-polar)) (define (imag-part x) (switcher x imag-part-rectangular imag-part-polar)) (define (magnitude x) (switcher x magnitude-rectangular magnitude-polar)) (define (angle x) (switcher x angle-rectangular angle-polar))
こんな感じにしてみた。
設定書くだけでどんどん増やせる。