Entries from 2008-05-01 to 1 month
Yajit いいなあ。 しかし Mosh はこれからダイナミックにインストラクションセットが変わるかもしれないし。 JITの時期ではないよな。 でもソースを読んで勉強しておくのは良いかもしれない。 あ。でも。 dekisugi% ./vm.scm compile "((lambda (x) (+ x 1))…
「セマンティクス」という言葉の意味を他人に(自分にも)うまく説明できないことに気づいた。 調べたら http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000315.html http://www.itmedia.co.jp/enterprise/0108/20/01082088.html あたりが分かりやす…
Rails の Session でCookieの session_id を変更したいのだけどうまくいかない。 例えば Cookie に session_id = xxxxx とRailsにより自動で設定されているとして、コントローラで cookies[:sessionのkey名] = { :value => new_session_id} とかやっても上書…
前回までのあらすじ。 psyntax 移植しようぜ。 "invalid syntax of top-level program" って怒られる psyntax にデバッグの print を入れる pre-built しなおす。 (cd tools/psyntax-r6rs/ && rm -f psyntax.pp && cp pre-built/psyntax-petite.pp psyntax.p…
「The portable R6RS library and syntax-case system」を Mosh に移植しよう!。 スタート pre-built な psyntax.pp を Mosh で実行し unbound variable を足していく。 ./mosh tools/psyntax-r6rs/pre-built/psyntax-gosh.pp void の定義を追加 void: The p…
R6RS の Records の参考実装を読んでいたら見つけた。 (define-syntax define-alist-extractor (syntax-rules () ((define-alist-extractor ?name ?name/cps ?tag ?default) (begin (define-syntax ?name/cps (syntax-rules (?tag) ((?name/cps () ?k . ?ran…
楽天など多くのメルマガがメールボックスに訪れて、必要なメールの邪魔をするようになってきた。 5分ほど頑張って、購読停止したらスッキリ。 特に楽天のメルマガはまとめて購読停止ができるし良心的だと思った。(その分購入時に、メルマガを受け取るがデフ…
恥ずかしいバグがあったので修正。(lequeさんご指摘ありがとうございました。)
以下のようなマクロを定義して do のバグを修正した。(マクロの元ネタはR6RS) (define-macro (do . sexp) (match sexp [(((var init step ...) ...) (test expr ...) command ...) `(letrec ((loop (lambda (,@var) (if ,test (begin #f ; avoid empty begin…
でかけ先でちょっと時間ができたのでバグ修正。 leque さんによる、doフォームのバグ指摘。 簡単な修正で対応できるが多少のコストをかけて、R6RS にある do のマクロ実装を define-macro と match で書きなおそうと決意。 書きなおしたがうまく動かない。 G…
先日受けたインタビュー「Webエンジニア武勇伝 第24弾 蓑輪太郎 氏 | サイボウズ・ラボ株式会社」が公開されました。 「自分のさぼり癖と頭の疲れを考慮した生活パターンの作り方」について、いつかどこかで書くと以前言ってた件にも少し触れています。
leque さんによるありがたいバグ指摘があったのでどんどん直すよ。 when/unless without body does not raise exception.compiler.scm で match を使って以下のようにしました。 [(when) (match sexp [('when pred body . more) (pass1/expand `(cond (,pred…
Andrew Wrightのパターンマッチライブラリが使えるようになりました。 mosh> (match '(a b) [(x y) (print x) (print y)] [else (print "not match")]) a b プリコンパイルして同梱してあるのですぐに試せます。
Scheme のリスト例えば '(1 2 3 4 5 6 7 8 9 .. 100000まで続く) を C++ のコードに変換すると cons(makeInt(1), cons(makeInt(2), cons(makeInt(3), ....))) と cons 関数の入れ子になるんですが、これがどうも g++ 的につらいらしい。 とにかくコンパイル…
遠出なのに家に眼鏡忘れた。
送り仮名とかを考えていると思考が途切れてしまい残念な感じになる。 慣れなのか?慣れなのか? ATOK のページを何度も眺めている。 しかし Emacs と ATOK X3 Linux の連携が想像できないので即購入は危険。 追記 http://d.hatena.ne.jp/MIZUNO/20080304/120…
time% msec calls name 0 0 34761 hogera しかも名前がひどい。 ちなみにこの日記は skk で書いた。
ddskk のチュートリアルをやってみた。 チュートリアル良くできているなあ。 skk に移行するかも。
そろそろ簡単なプロファイラが欲しくなったので実装します。 作るプロファイラは gprof などのプロファイラでは知ることのできない Scheme の世界のこと、例えば「どのScheme 手続きの実行に時間がかかっているか?」などを知るためのものです。 作ってみた…
SKKに興味がわいてきたが 6月中旬まで忙しいのでそれまではどうしようか。 Anthy の辞書をまともにするというのが正攻法でコストが低そう。 sudo update-anthy-dics してみたが効果は良く分からない。どこかに良い時所内かな。(←Anthyのデフォルトの変換。…
よく ./configure 時に --enable-xxxx といった特定の機能を有効にするかどうかのオプションをつけますが、これを実現するための方法のまとめです。今回は --enable-profiler という名前でオプションを作ります。 configure.ac configure.ac に以下のように…
ARM版 Monaである Monarm がコンテキストスイッチに成功したようです。 http://d.hatena.ne.jp/myokota/20080521/1211385643 今のx86 Mona の仕組みの解読もされていて、下のような図まで作ってくださっています。 すごすぎる。
/ (割り算)のバグ修正 mod のバグ修正(最初 R5RS の modulo と混同してはまった) ついでに div を追加 #Lisp_Scheme で skk の話が盛り上がる。 まだ慣れなくて辛い。
今朝から作業をはじめて今動くようになった。 明日はコードをキレイにしたり、実装の解説を書く予定。 sewashi% ./mosh -p match.scm |head -30 time% msec calls name 36 750 899617 generic-assoc 1 30 21012 set-cons 1 30 91196 foldr1 1 40 108543 $map…
R6RS の算術まわり(いわゆる Numeric Tower)を実装してくれる人とかいないかなあ。 Bignum やら浮動小数やら、正確数、複素数などもろもろ、好きな人にはとても面白い題材だと思うので、興味のある人はぜひご連絡下さい。
#Lisp_Scheme で話題に上がっていた2004年に行われたLispチュートリアル&Lispセミナー&Lisp事例紹介。 http://jp.franz.com/base/seminar-2004-06-10.html ここで Shiro さんが「ACL7.0の新しい正規表現ライブラリ」という発表をしています。面白い。 http…
Mosh でマクロもプリコンパイルできるように考えている。 基本的にはプリコンパイル時のコンパイラの状態を、プリコンパイル済みのコードにくっつけてあげれば良いはずだが。 メタすぎてだんだん分からなくなってきた。 しかし状態を hash-table で持ってい…
http://jp.youtube.com/watch?v=nrFMRuB2lbA プロの方が字幕をつけたらしいです。素晴らしい。 最後の授業 ぼくの命があるうちに DVD付き版posted with amazlet at 08.08.03ランディ パウシュ ジェフリー ザスロー ランダムハウス講談社 売り上げランキング:…
Mosh 0.0.3 をリリースしました。(ダウンロード)例外システム、eval、REPL の追加により更に本格的なプログラミングが出来るようになりました。 変更点は以下の通りです。 R6RS の例外システムを実装。 (raise ...) (raise-continuable ...) (with-excepti…