Entries from 2008-05-01 to 1 month

Yajit

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 を変更したい

Rails の Session でCookieの session_id を変更したいのだけどうまくいかない。 例えば Cookie に session_id = xxxxx とRailsにより自動で設定されているとして、コントローラで cookies[:sessionのkey名] = { :value => new_session_id} とかやっても上書…

Mosh に psyntaxを移植しよう その2

前回までのあらすじ。 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…

Mosh に psyntaxを移植しよう その1

「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…

Schemeの勉強になるマクロの例

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分ほど頑張って、購読停止したらスッキリ。 特に楽天のメルマガはまとめて購読停止ができるし良心的だと思った。(その分購入時に、メルマガを受け取るがデフ…

case のバグ修正

恥ずかしいバグがあったので修正。(lequeさんご指摘ありがとうございました。)

do のバグの修正完了

以下のようなマクロを定義して 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…

バグ修正 do の経過

でかけ先でちょっと時間ができたのでバグ修正。 leque さんによる、doフォームのバグ指摘。 簡単な修正で対応できるが多少のコストをかけて、R6RS にある do のマクロ実装を define-macro と match で書きなおそうと決意。 書きなおしたがうまく動かない。 G…

Webエンジニア武勇伝のインタビューが公開されました

先日受けたインタビュー「Webエンジニア武勇伝 第24弾 蓑輪太郎 氏 | サイボウズ・ラボ株式会社」が公開されました。 「自分のさぼり癖と頭の疲れを考慮した生活パターンの作り方」について、いつかどこかで書くと以前言ってた件にも少し触れています。

バグ修正 when/unless

leque さんによるありがたいバグ指摘があったのでどんどん直すよ。 when/unless without body does not raise exception.compiler.scm で match を使って以下のようにしました。 [(when) (match sexp [('when pred body . more) (pass1/expand `(cond (,pred…

Mosh でパターンマッチライブラリが使えるように

Andrew Wrightのパターンマッチライブラリが使えるようになりました。 mosh> (match '(a b) [(x y) (print x) (print y)] [else (print "not match")]) a b プリコンパイルして同梱してあるのですぐに試せます。

スクリプトで生成した無茶なコードを g++ でコンパイルすると激遅の件の対応

Scheme のリスト例えば '(1 2 3 4 5 6 7 8 9 .. 100000まで続く) を C++ のコードに変換すると cons(makeInt(1), cons(makeInt(2), cons(makeInt(3), ....))) と cons 関数の入れ子になるんですが、これがどうも g++ 的につらいらしい。 とにかくコンパイル…

忘れ物

遠出なのに家に眼鏡忘れた。

skk2日目

skk

送り仮名とかを考えていると思考が途切れてしまい残念な感じになる。 慣れなのか?慣れなのか? ATOK のページを何度も眺めている。 しかし Emacs と ATOK X3 Linux の連携が想像できないので即購入は危険。 追記 http://d.hatena.ne.jp/MIZUNO/20080304/120…

デバッグ用の手続きが数万回呼ばれていた件

time% msec calls name 0 0 34761 hogera しかも名前がひどい。 ちなみにこの日記は skk で書いた。

ddskkのチュートリアル

ddskk のチュートリアルをやってみた。 チュートリアル良くできているなあ。 skk に移行するかも。

プロファイラを実装する方法 - Mosh 開発

そろそろ簡単なプロファイラが欲しくなったので実装します。 作るプロファイラは gprof などのプロファイラでは知ることのできない Scheme の世界のこと、例えば「どのScheme 手続きの実行に時間がかかっているか?」などを知るためのものです。 作ってみた…

IMEの件

SKKに興味がわいてきたが 6月中旬まで忙しいのでそれまではどうしようか。 Anthy の辞書をまともにするというのが正攻法でコストが低そう。 sudo update-anthy-dics してみたが効果は良く分からない。どこかに良い時所内かな。(←Anthyのデフォルトの変換。…

autoconf で ./configure --enable-xxxx を使う方法

よく ./configure 時に --enable-xxxx といった特定の機能を有効にするかどうかのオプションをつけますが、これを実現するための方法のまとめです。今回は --enable-profiler という名前でオプションを作ります。 configure.ac configure.ac に以下のように…

ARM版 Mona であるMonarm がコンテキストスイッチに成功したようです

ARM版 Monaである Monarm がコンテキストスイッチに成功したようです。 http://d.hatena.ne.jp/myokota/20080521/1211385643 今のx86 Mona の仕組みの解読もされていて、下のような図まで作ってくださっています。 すごすぎる。

バグ修正など - Mosh開発

/ (割り算)のバグ修正 mod のバグ修正(最初 R5RS の modulo と混同してはまった) ついでに div を追加 #Lisp_Scheme で skk の話が盛り上がる。 まだ慣れなくて辛い。

Mosh のプロファイラができたよ ^ω^ - Mosh 開発

今朝から作業をはじめて今動くようになった。 明日はコードをキレイにしたり、実装の解説を書く予定。 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…

Mosh で算術まわりをやってくれる人はいないだろうか - Mosh 開発

R6RS の算術まわり(いわゆる Numeric Tower)を実装してくれる人とかいないかなあ。 Bignum やら浮動小数やら、正確数、複素数などもろもろ、好きな人にはとても面白い題材だと思うので、興味のある人はぜひご連絡下さい。

2004年のLispチュートリアル&Lispセミナー&Lisp事例紹介

#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 をリリースしました

Mosh 0.0.3 をリリースしました。(ダウンロード)例外システム、eval、REPL の追加により更に本格的なプログラミングが出来るようになりました。 変更点は以下の通りです。 R6RS の例外システムを実装。 (raise ...) (raise-continuable ...) (with-excepti…