ダブルクロスの達成値の平均値を求めるプログラムをschemeで書く、です。
「複数のダイスを振ったときのリストを作ってくれる関数」なのですが、なかなかよくわからなくなってきました。

(define (my-dice-combination l m )
  (if (null? l)
	  ()
	  (cons (cons (car l) (cons m ())) (my-dice-combination (cdr l) m))))
(write
 (my-dice-combination (my-dice 1 10) 1))
(write
 (list
  (my-dice-combination (my-dice 1 10) 1)
  (my-dice-combination (my-dice 1 10) 2)))

(define (my-append l m)
  (if (null? l)
	  m
	  (cons (car l) (my-append (cdr l) m))))

(write
 (my-append
  (my-dice-combination (my-dice 1 10) 1)
  (my-dice-combination (my-dice 1 10) 2)))

(define (my-dice-combo-iter l n )
  (if (<= n 0 )
	  ()
	  (my-append (my-dice-combination l n) (my-dice-combo-iter l (- n 1)))))
(define (my-dice-combo l)
  (my-dice-combo-iter l (mylen l)))

(write
 (my-dice-combo (my-dice 1 10)))
;=>
((1 10) (2 10) (3 10) (4 10) (5 10) (6 10) (7 10) (8 10) (9 10) (10 10)
 (1 9) (2 9) (3 9) (4 9) (5 9) (6 9) (7 9) (8 9) (9 9) (10 9)
 (1 8) (2 8) (3 8) (4 8) (5 8) (6 8) (7 8) (8 8) (9 8) (10 8)
 (1 7) (2 7) (3 7) (4 7) (5 7) (6 7) (7 7) (8 7) (9 7) (10 7)
 (1 6) (2 6) (3 6) (4 6) (5 6) (6 6) (7 6) (8 6) (9 6) (10 6)
 (1 5) (2 5) (3 5) (4 5) (5 5) (6 5) (7 5) (8 5) (9 5) (10 5)
 (1 4) (2 4) (3 4) (4 4) (5 4) (6 4) (7 4) (8 4) (9 4) (10 4)
 (1 3) (2 3) (3 3) (4 3) (5 3) (6 3) (7 3) (8 3) (9 3) (10 3)
 (1 2) (2 2) (3 2) (4 2) (5 2) (6 2) (7 2) (8 2) (9 2) (10 2)
 (1 1) (2 1) (3 1) (4 1) (5 1) (6 1) (7 1) (8 1) (9 1) (10 1))#<undef>

…やっと2D。…しかも、なんか方向性が違う気がしてきた。

ブックオフでエイリアン秘宝街を買ったら初版だった。
家宝にしよう!