« ズボラ防災日記 |Main| 論文誌も変わらなきゃ日記 »

« ズボラ防災日記 | zakki(雑記) | 論文誌も変わらなきゃ日記 »

odaiba日記

人力検索はてな - 教えてください!!  googleの入社問題です。 Congratulations. You've made it to level 2. Go to www.Linux.org and enter Bobsyouruncle as the login and the answer ..

ちょw、聞くなよw


= 「新世界より」の楽譜を入手。あの有名なフレーズはオーボエなんですね。
= お台場のラボに50インチのディスプレイが入るという話は聞いていたけども、 来てみたらハンドライティングシステムまであった! 50インチのタッチパネル!ぎゃー!

と思ったけど、実はハンドライティングシステムってそんなに高くないようだ。 23万円くらい。 ディスプレイの方は価格がわからなかったけども、似たような型番のものだと75万くらいか。 熱帯魚に100万とかかける人もいるようだから、 自宅に50インチタッチパネルってのもありかも知れない。

書道できる。


= メリ!ハリ!メリ!ハリ!


= 校正していて思ったのだけど、 「実際の」が多すぎる、自分。 実際のところ、「実際の」は全部削っても問題がない。
= 20時。おなかすいた。
= Emacs Lisp、キライ。 GRINEditを呼び出す関数群を一つのジェネレータから作るようにしようとしたらうまく行かず。 原因を調べていたら、
(defun foo (x)
  (lambda (y) (+ x y)))

((foo 1) 2)
これがエラー。 まず関数と変数の名前空間を区別しているので関数が呼びたければ下のようにしなきゃいけない。
(funcall (foo 1) 2)
でもって、これでも(void-variable x)というエラーになる。 lambdaの中で使われているxは外のxを参照できていない。 キライ。 Schemeなら
(define (foo x) (lambda (y) (+ x y)))

((foo 1) 2) ;=> 3
と非常にわかりやすいのに。 Emacs Lispでパラメトライズされた関数群を返したいときにはどうしたらいいんだろうか。

GNU Emacs Lisp Reference Manual - スコープと Extent。 うーん。僕がやろうとしていることはやろうとしている方法ではできないと言うことか…。

はっ。マクロを使うのか?!

GNU Emacs Lisp Reference Manual - マクロ

(defmacro foo (x) (list 'lambda (list 'y) (list '+ x 'y)))
(funcall (foo 1) 2) ;=> 3
マクロを使ったら出来た。えー。

で、やりたかったことはこれなんだが…

(defun generate-process-caller
       (script-name)
       (lambda ()
	       (interactive)
	       (call-process-region
		(point-min)
		(point-max)
		script-name)))
こうなるのか?↓
(defmacro generate-process-caller
       (script-name)
       (list 'lambda '()
	       (list 'interactive)
	       (list 'call-process-region
		(list 'point-min)
		(list 'point-max)
		script-name)))
うまく動いた。うーん。 いまいち好きになれないなぁ、これ。

以上、実は「はじめてのマクロ」でした。

Scheme、Common Lisp、Emacs Lispの比較。 ふむふむ。やっぱり僕の好みはScheme > Common Lisp > Emacs Lispの順かなぁ。


= おなかの調子が悪い。
= メリハリ。ハリって疲れたのでメリの時間なんだけども、 疲れすぎてウダーを練習する気力がでない。ううむ。 まぁ一応つなぐだけつなごうか。

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/489

フィードバック

by もっぽ | 2007年01月25日 07:49

楽器は毎日やんないとだめだじょ~

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.