このようなLispコードを書きたい
(defstruct board
(size 7)
(matrix (make-array (list size size))
(red-stones 0)
(black-stones 0))
ゲームのボードを表す構造を定義するため。
指定された次元(サイズxサイズ)でその場でマトリックスを作成するmake-boardを使用して新しいボードを作成できるようにしたいので、make-boardを作成する別の関数から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の両方を利用できるようにするのは好きではありません。プログラミングの間違いにつながる可能性があるからです。