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

emacsのキーバインド

emacs使ってるけどemacsのキーバインドには全然慣れていない(というか知らない)。 これじゃemacs使ってる意味ないなー、ってことで、ここ数日は先日紹介したdrill-instructor.el(http://blog.livedoor.jp/k1LoW/archives/65055608.html)を使ってる。 取…

set!

既に束縛されている名前を、再び違うオブジェクトに束縛する手続き。 多くの手続き型言語でいう「代入」をやりたいときに使う。 gosh> (set! lambda 3.141592) 3.141592 gosh> lambda 3.141592 みたいな。 これやっちゃうと大変なことになるけどね! で、指…

9章1節の練習問題:delete-1

srfi-1のdeleteは等価述語を満たす要素を全部削除してしまうけど、見つけた1つ目だけ消す手続きdelete-1を定義してみると (define delete-1 (lambda (elt lis . optional) (let-optionals* optional ((cmp-fn equal?)) (define loop (lambda (lis) (cond ((n…

delete

gosh> (use srfi-1) #<undef> gosh> (define *p* (cons 1 2)) *p* gosh> (delete *p* (list *p* *p* (cons 1 2) *p* *p*)) () gosh> (delete *p* (list *p* *p* (cons 1 2) *p* *p*) eq?) ((1 . 2)) みたいな、第1引数を第2引数のリストから見つけて全部削除した残</undef>…

member

gosh> (member 'cookie *inventory*) (cokkie dagger) gosh> (member 'ration *inventory*) #f のように、第1引数を第2引数の中から探し、見つかった場合には見つけたものを含めた残りのリストを、見つからなかったら#fを返す。 つまり、ifなどの条件式に使…

9章はじめー

9章1節、集合。 うっはー! 代入が一般的ではないSchemeで、どうやって状態を扱うのかとても興味がある。 すべて式である なんて言っちゃってるけど、やっぱ代入しちゃうのね。 新出の手続きは以下。 member set! delete これらの手続きを使って、持ち物を表…