2009-03-17から1日間の記事一覧

pop!

push!があるならpop!もあるんじゃないかなと思ってやってみたら、やっぱりあった。 gosh> (define *nums* (list 1 2 3 4)) *nums* gosh> (pop! *nums*) 1 gosh> *nums* (2 3 4) gosh> (pop! (cdr *nums*)) 3 gosh> *nums* (2 4) popした値を返すのね。 popの…

一般化set!

9章6節。最近は1日1節にも満たないなぁ。 超スローペース。こりゃいかん。 id:yagiey:20090307:1236410958で登場したset!が再び登場。 set!は既に束縛されている名前を別のオブジェクトに束縛し直す手続き(?マクロ?よく分からんけど)だったけど、SRFI-17…

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> car #<subr car> gosh> (lambda (x) x) #<closure #f> gosh> push! #<macro push!> たぶん、#以外が手続きなんだと思う。</macro></closure></subr>