計算機プログラムの構造と解釈 第二版 P62 問題2.25

パズルみたいな問題。


いったん、よくわかんないcarを入れるのがポイント。
ま、よく考えるとわかるんだけども。
listの定義をよくふまえないと、ちょっとあれだ。


実装

#!/usr/local/bin/gosh
;; -*- coding: utf-8 -*-

(use ggc.debug.trace)
(use math.mt-random)

(define x (list 1 3 (list 5 7) 9)) 

(define y (list (list 7)))

(define z (list 1 (list 2 (list 3 (list 4 (list 5 (list 6 7)))))))


;; main
(define (main args)

  (display "x:")
  (display x)
  (newline)

  (display "(car (cdr (car (cdr (cdr x))))): ")
  (display (car (cdr (car (cdr (cdr x))))))
  (newline)
  (newline)

  (display "y:")
  (display y)
  (newline)

  (display "(car (car y)): ")
  (display (car (car y)))
  (newline)
  (newline)

  (display "z:")
  (display z)
  (newline)

  (display "(car (cdr (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr z)))))))))))):")
  (display (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr z)))))))))))))
  (newline)

  (newline)
  0)  


実行

x:(1 3 (5 7) 9)
(car (cdr (car (cdr (cdr x))))): 7

y:((7))
(car (car y)): 7

z:(1 (2 (3 (4 (5 (6 7))))))
(car (cdr (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr z)))))))))))):7