Lisp配列要素の置換
配列の要素を取得するには、aref関数を使う。
> (setq array-1 #2A(("AAA" "BB")("C" "DDDD"))) #2A(("AAA" "BB") ("C" "DDDD")) > (aref array-1 0 0) "AAA"
この、aref の戻り値を置き換えるような形で配列要素の置換ができる。
> (setf (aref array-1 0 0) "OK") "OK" > array-1 #2A(("OK" "BB") ("C" "DDDD"))
ここで、setf でなく、setq を使用するとエラーとなって置換できなかった。setqは、
>(set (quote x) "X") "X"
と、実際にはquote関数の返した変数(シンボル?)に、第二引数の値を格納する、という処理を行っているのはわかるが・・・具体的にsetfと何が違うのか?う〜ん・・・