<jupyter_start><jupyter_text>練習問題2.48平⾯上の⽅向つきの線分は、ベクトルのペア-原点から線分の始点へと張られるベクトルと、原点から線分の終点へと張られるベクトル-  として表現できる。  練習問題2.46で書いたベクトル表現を使って、  make-segmentというコンストラクタと  start-segmentとend-segmentというセレクタによって線分の表現を定義せよ。<jupyter_code>; ベクトルコンストラクタ・セレクタ
(define (make-vect x y)(cons x y))
(define (xcor-vect v)(car v))
(define (ycor-vect v)(cdr v))

; ベクトル演算
(define (add-vect v1 v2)
  (make-vect (+ (xcor-vect v1) (xcor-vect v2))
             (+ (ycor-vect v1) (ycor-vect v2))
             )
  )
(define (sub-vect v1 v2)
  (make-vect (- (xcor-vect v1) (xcor-vect v2))
             (- (ycor-vect v1) (ycor-vect v2))
             )
  )
(define (scale-vect s v)
  (make-vect (* s (xcor-vect v)) (* s (ycor-vect v))
             )
  )
; 回答
; 線分コンストラクタ・セレクタ
(define (make-segment v1 v2)(cons v1 v2))
(define (start-segment seg)(car seg))
(define (end-segment seg)(cdr seg))
; 動作確認
(define v1 (make-vect 1 -2))
(define v2 (make-vect -3 4))

(define s (make-segment v1 v2))

(display (start-segment s))
(newline)
(display (end-segment s))
(newline)<jupyter_output>(1 . -2)
(-3 . 4)
{'fraction_non_alphanumeric': 0.17121354656632173, 'fraction_numerical': 0.03198494825964252, 'mean_word_length': 3.342857142857143, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '284338', 'license': 'CC0-1.0', 'n_tokens_mistral': 597, 'n_tokens_neox': 595, 'n_words': 101, 'path': 'exercises/2.48.ipynb', 'repo_name': 'tokits/sicp-study', 'size': '1063'}