Entries from 2007-01-01 to 1 month
setjmp/longjmp を使う方法。 ケース1 a(x)->b(x)->c(x)->d(x)のように関数を深い方向に呼び出しているとします。 a(x) { //ここで継続を取り出す // ここ(setjmp) // b(x); } b(x) { c(x); } c(x) { d(x); // d(x)の結果次第で // longjmpする } setjmp時の…
sf.netで以前は svn move をcommit出来ていたのですが、最近 forbidden になりませんか? 追記 解決策発見 N2 ToolBox sourceforge.netのSVNで403エラー
Gauche - VMのスタック操作 Schemeを作ろう 第3回 ちなみに現時点ではさっぱり分からない。 まあ何とかなるでしょう。
automakeのdepcompが依存ファイルの管理をやってくれるらしいのだけど微妙。 gcc -MM ほどの精度がない automake で gcc -MMを利用する良い方法はないものか。
マクロの多用といってもSchemeのマクロではない。 C言語のマクロである。 手続きを簡単に効率良く書けるようにという意図。 例えば char=? であれば PROCEDURE(CharcterEqualP, "char=?") { ARGC_SHOULD_BE(2); CAST(ARGV(0), Charcter, c); RETURN_BOOLEAN(…
symbol周りを実装。R5RSからの引用によれば シンボルとは,二つのシンボルが(eqv? の意味で) 同一な のは名前が同じようにつづられるときかつそのときに限ら れるという事実に,その有用性がかかっているオブジェクト である。 これだけだと良く分からない。…
vectorと必須手続きを実装した。 Schemeのベクタは固定長なのね。 内部実装は std::vector だからいつでも可変長にできるという話。
http://www.monaos.org へアメリカからやたらアクセスがあると思ったら、ちょっとだけSlashdotで言及されていたよ。 大変光栄です。アクセス多い。 Other free-desktop operating system projects which take different and innovative approaches like Reac…
symbol周りを完成させる。 そのあとは基本手続きをがーっと作って。 call/ccかな。楽しみだ。
quote の syntax sugar ' を実装した char を実装した char関連の必須手続きを実装しテストも書いた 手続きを簡単に定義できるようにCのマクロを書いた 明日は vector かな。
ChangeLog で長期的な todo を管理している場合、過去の特定のChangeLogエントリーにその todo が書かれていることがあると思います。 分量が少ない todo であれば、新しい日付のエントリーにコピーしていけば良いのでしょうが、量が多い場合はそうはいきま…
Hey Bulldogを静かな部屋で良いスピーカで聞きたい!(もしくはQC3で) QC3で聴いた。あぁベース最高だ。これでごはん3杯はいけるよね。 演奏したことあるけど歌とギターだった。 ベースの人はさぞかし気持ちよかっただろうなぁ。 やっぱり中後期になるとベー…
quote とはに関して迷っていたわけですが、shiroさん, arinoさん, id:hiratchさん, id:alohakunさんにたくさんのアドバイスを頂きました。 ありがとうございます。 おかげさまできちんと理解できました。 ↓過去の迷い quoteとは quote続き 結局 quote とは?…
マクロがある程度動いているので id:tomapd:20060515:1147711444 を参考にちょっとしくみを作った。 assert-true/assert-false をラップした assert-check-true/assert-checke-false。 (assert-check-true "eqv? - should be #t" (eqv? #t #t) (eqv? #f #f) …
Rieceでなるとが、なるととして表示されている。感動。
shiroさんの御指摘をうけて load を eval を利用して通常手続きとして実装しようと試みる。 マクロの展開がうまくいっていないので調べ中。
quoteの用途 eval の引数 gosh> (eval (quote (cons 1 2)) (scheme-report-environment 5)) (1 . 2) gosh> (cons 1 2) (1 . 2) データ構造を入力する (define x (quote (a b c))) (car x) a なんとなく gosh> (eq? (list 'a 'b) (quote (a b))) #f gosh> (eq…
class_create.pl を書いた。 これでC++で実装するSchemeの通常手続きを書きやすくなった。
確かにSICPは入門コースの教科書だけど、最初にあれに触れて全部理解できた 人は選ばれた人って感じがする。Shiro な、なんだってー。 shiroさんとか arinoさんとかそういう人はさらっと読んでいるんだろうなと思っていた。
eval を実装するには Quote を知らなくてはいけない。 Quoteはインタプリタの中の小人から見たらどういうものだろうか。 というようなことを悶々と考えていて、脳味噌がグルグルした。 あるとき閃き「分かった!」と大声で叫んで、すぐに実装してみた。 それ…
いま +-*/ などの関数をそれぞれ Plus.[h|cpp], Minus.[h|cpp], Multiply.[h|cpp], Devide.[h|cpp]のように、まじめにクラスを書いている。 ただ apply を実装するだけなのでクラスの構造は保ちつつ、楽をしたいというのが正直な気持ち。 一つの方法として .…
現状はエラー時に fprintf で stderr にごにょっとメッセージを出して return NULL; みたいなありえないことをやっている。 そのせいでたまにセグフォするという極悪仕様なのだけれども、これをまともにするのが今日の作業。 実現したいこと 大域脱出してシ…
ひさしぶりに cvs up して Emacs を CVS HEADにした。 安定すると良いな。
and/or を特殊形式として実装していたが、マクロに置き換えた。 マクロ便利。
load はじめに load を + - * / などと同じ土俵で実装しよう試みたが大間違いに気づいた。 マクロの展開以前の、テキスト => Node というフローで load しておかないとまずい。 他の手続きとは全然違うレイヤの手続きであることに今更ながらにきづいた。 set…
今までのテストは test.scm を実行して結果を目視 cppunit で C++ の関数をテスト というフローでした。 マクロの実装が進んできたので Scheme での Unit Test の必要性が出てきました。 そこで目をつけたのが id:kzk さんの SigSchemeの unittest.scm です…
僕は ChangeLog で todo を管理しています。 以下の様に箇条書きで、終わっていないものは□、終わったものは■(塗りつぶし)で書いています。(この方式は id:kambara に教わりました。) -□括弧の数の対応をチェック -□現状把握をして優先度を決める -□すべての…
trunkにある audio 試してみました。割り込みが来てないとのことでしたがキタキタ! カーネルに割り込みが来ているか?を調べる方法 kernel/ihandlers.cppで // こいつをコメントアウト //IRQHANDLERSlave(9) // こいつを追加 void irqHandler_9() { g_console->p…
メモ帳に図を描きまくった。 挙げ句の果てに今僕に必要な関数が分かった! 気づくの遅いよ… int MacroFilter::foreachNodes(Node* root, int (MacroFilter::*f)(Node*))
以下の様な関数を書いた。 int MacroFilter::foreachNode(Node* root, bool (Node::*match)() const, int (MacroFilter::*func)(Node* root, Node* node)) { int ret = 0; if (root->isNodes()) { // don't use iterator for (Nodes::size_type i = 0; i < r…