push!マクロ

9章1節で出てきたけど、ガン無視してた。


先頭に要素を追加したリストで名前を束縛し直す操作

gosh> (define *nums* (list 1 2 3 4))
*nums*
gosh> *nums*
(1 2 3 4)
gosh> (set! *nums* (cons 0 *nums*))
(0 1 2 3 4)

みたいなのはよくあることなので、push!というマクロが用意されているそうだ。
こんなん。

gosh> *nums*
(0 1 2 3 4)
gosh> (push! *nums* -1)
(-1 0 1 2 3 4)