next up previous
Next: 4.5.4 データ指向型プログラミング Up: 4.5 データのタイプ付け Previous: 4.5.2 極座標と直交座標の例

4.5.3 場合分けを明示する汎用手続き

極座標と直交座標のどちらのデータで表現されて いようとも,その実部,虚部,絶対値,偏角を返す手続きを 作る方法として,データタイプの場合に応じて 個別の関数を呼び出す方法があります.

(define (real-part z)
  (cond ((rectangular? z)
         (real-part-rectangular (contents z)))
        ((polar? z)
         (real-part-polar (contents z)))))

(define (imag-part z)
  (cond ((rectangular? z)
         (imag-part-rectangular (contents z)))
        ((polar? z)
         (imag-part-polar (contents z)))))

(define (magnitude-part z)
  (cond ((rectangular? z)
         (magnitude-part-rectangular (contents z)))
        ((polar? z)
         (magnitude-part-polar (contents z)))))

(define (angle-part z)
  (cond ((rectangular? z)
         (angle-part-rectangular (contents z)))
        ((polar? z)
         (angle-part-polar (contents z)))))
という具合に,タイプごとにcond文で 場合分けをするわけです.

generated through LaTeX2HTML. M.Inaba 平成18年5月6日