Схема: Как я могу изменить список, составленный с минусами, на вектор? - PullRequest
2 голосов
/ 02 января 2011

Как я могу изменить этот список, сделанный с cons на вектор?

((p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p))

Это мой код:

(define b "black")
(define w "white")

(define (board)
  (letrec ((ti
            (lambda (x)
          (if (eq? x 8) '()
          (cons (lh x 0) (ti (+ 1 x))))))
       (lh
        (lambda (x y)
          (if (eq? y 8) '()
          (cons (if (odd? (+ x y)) 'b 'w) (lh x (+ 1 y)))))))
    (ti 0)))

Ответы [ 2 ]

5 голосов
/ 02 января 2011

Используйте функцию list->vector для всего списка, а затем для каждого подсписка, используя vector-map.

Или, альтернативно, сначала используйте map, чтобы применить list->vector к каждому подсписку, а затем используйте list->vector для всего списка.

0 голосов
/ 02 января 2011

Это то, о чем ты думаешь?

#(#(p b p b p b p b)
  #(b p b p b p b p)
  #(p b p b p b p b)
  #(b p b p b p b p)
  #(p b p b p b p b)
  #(b p b p b p b p)
  #(p b p b p b p b)
  #(b p b p b p b p))
...