Я хочу написать такой код на Лиспе, как этот
(defstruct board
(size 7)
(matrix (make-array (list size size))
(red-stones 0)
(black-stones 0))
, чтобы определить структуру, представляющую игровую доску.
Я хочу иметь возможность создавать новую доску сmake-board, которая будет создавать матрицу на лету с заданным размером (размер x размер), так что мне не придется вызывать make-board из другой функции, которая создает матрицу.
Однако, когдаЯ загружаю этот код в интерпретатор clisp и пытаюсь создать новую доску (с make-board), я получаю сообщение об ошибке, сообщающее, что «size» не имеет значения.
Есть ли способ использоватьполя структуры в самом определении структуры?
Или я должен это сделать?
(defstruct board
size
matrix
(red-stones 0)
(black-stones 0))
(defun create-board (size)
(make-board :size size :matrix (make-array (list size size))) )
Действительно, мне не нравится, когда доступны как make-board, так и create-boardпотому что это может привести к ошибкам программирования.