 
 
 
 
 
   
 Next: 4.5.3 場合分けを明示する汎用手続き
Up: 4.5 データのタイプ付け
 Previous: 4.5.1 タイプつけ
 
例として2次元の座標データを極座標(polar)と直交座標(rectangular)で表現
した場合の例をしめします.
それぞれのデータを作るための手続きと
どちらのタイプであるかを判定する手続きは
以下のようになります.
 
(define (make-rectangular x y)
  (attach-type 'rectangular (cons x y)))
(define (make-polar x y)
  (attach-type 'polar (cons x y)))
(define (rectangular? z)
  (eq? (type z) 'rectangular))
(define (polar? z)
  (eq? (type z) 'polar))
実部,虚部,絶対値,偏角を求める手続きをそれぞれの
データタイプに対して用意すると,
 
(define (square x) (* x x))
(define (real-part-rectangular z) (car z))
(define (imag-part-rectangular z) (cdr z))
(define (magnitude-rectangular z)
  (sqrt (+ (square (car z)) (square (cdr z)))))
(define (angle-rectangular z)
  (atan (cdr z) (car z)))
(define (real-part-polar z)
  (* (car z) (cons (cdr z))))
(define (imag-part-polar z)
  (* (car z) (sin (cdr z))))
(define (magnitude-polar z) (car z))
(define (angle-polar z) (cdr z))
となります.
 
generated through LaTeX2HTML. M.Inaba 平成18年5月6日