ニセSchemeで継続させたい
メモです。
今、俺のニセSchemeで継続ができるように頑張っています。
とりあえず、今の実装ではなくスタックマシンライクなバーチャルマシンで
実行すれば上手くいくんじゃないかと思い、
YARVとかFORTHとかを調べて、必死こいて考えています。
そこで問題に気がついたのですが、今のマクロは以下のように書けます。
マクロとラムダをごっちゃにしてもそれなりに動きます。
(define my-or (macro (a b) (list (quote if) a a b))) (map (list my-or ; 1とだけ表示される。戻り値1 (macro (a b) (list (quote if) a b NIL)) ; 1と2が表示される(and)。戻り値2 + ; 1と2が表示され、戻り値3 (lambda (a b) (+ a b)) ; + と同じ (lambda (f) (f (p 1) (p 2))))
ここまで自由だとコンパイルのやりようがない。
なので、実行前にマクロは展開しようと思います。
ついでに文法も変更します。
(defmaco my-or (a b) (list (quote if) a a b)) (my-or NIL T) (list my-or) ; これはとりあえずコンパイルエラーにする。
必ず、マクロの宣言時はマクロの名前を付けるようにして、
コンパイル時のヒントに使う。
(defmacro ...)の戻り値は必ずNILで、(my-or x y)のように名前を参照しないと呼び出せないようにする。
マクロは、変数関数とは違うスコープに格納され、実行時には参照できないことに。
今の実装よりちょっと退化しちゃうけど、しょうがないか。
今は、コンパイラの実装のしやすさ優先にして、自由さはあとから何とかすればいいし。
今週中にマクロの展開はできればいいな。
基本情報の締め切り(インターネット受付)は2月20日までです。
情報処理技術者試験センター 平成19年度春期試験について
http://www.jitec.jp/1_02annai/h19haru_exam.html
俺は今回はパスです。
出向先の会社の皆さんと飲んできました。
ここ最近体力が弱りまくっているので、飲まないつもりでしたが、日本酒と焼酎を飲んでしまいました。
最近うすうす感じてるのですが、焼酎ってあまり酔いにくいのかもしれない。
まあ別に大して上手いとも思わないから別にどうでもいいんだけども、
無理やり飲ませたい人がいつような時は便利かもしれない。
去年はずっといわきに行っていたので、初めて飲む人も何人かいたのですが、かなり楽しく飲めてきました。
二人くらい暴走してたのをみて、久しぶりに腹が痛くなるほど笑えました。
また飲みにいきたいなー。
ニセSchemeでquine
以下のコード、全く修正無しに一発で動かせました。
((lambda (x) (list x (list (quote quote) x))) (quote (lambda (x) (list x (list (quote quote) x)))))
このコード、実行結果が、以下のコードと同じなのです。
つまり、自己言及とかそういう可能性を秘めたコードなのです。
いやー、プログラムって本当に面白いですね。
(参考) http://www.nyx.net/~gthompso/quine.htm
買っちゃいました。
メイド イン ジャパン~THE BEST OF RHYMESTER~(初回生産限定盤)(DVD付)
- アーティスト: RHYMESTER,BOY-KEN,Kick the Can Crew,SUPER BUTTER DOG,SCOOBIE DO,クレイジーケンバンド,F.O.H,MAKI THE MAGIC,King Giddrah,RAPPAGARIYA,FIRE BALL
- 出版社/メーカー: キューンレコード
- 発売日: 2007/01/31
- メディア: CD
- クリック: 58回
- この商品を含むブログ (73件) を見る
そのうち3曲が再録音とかで、本当の新曲は1曲しかないけど、買っちゃったよ。
やっぱいいねー。DVDはこれから見る予定。
それはそれとして、問題なのはiPodでどう管理するかだなー。
ベストアルバムは既存のアルバムとトラックがかぶるわけだから、
二つともプレイリストに入れるのはディスク領域を無駄に使ってしまうから避けたい。
アルバム単位で再生する場合は、両方のアルバムから参照したい。
その一方で、再生回数は二つに分かれず同じトラックとしてまとめてカウントして欲しい(聞いてる側からすれば、それは同じトラックなのだから)。
宿題 : iTunesで二つのアルバムから参照されるトラックって作れないのかな?
プレスリリース
そういや言ってなかったけど、今週一週間だけ盛岡にいます。
来週からまたいわきです。