ブックマーク / wasabiz.hatenablog.com (3)

  • 1ヶ月でgaucheより速くてポータブルなR7RS準拠のscheme処理系作ってみた - wasabizの日記

    2013-11-07 1ヶ月でgaucheより速くてポータブルなR7RS準拠のscheme処理系作ってみた タイトルは釣りです。 大学のC言語の授業()で暇を持て余した上級者向けに「C言語でscheme処理系を作れ」という楽しい課題が出たのでscheme処理系つくりました。 https://github.com/wasabiz/picrin さっきコンパイルラインに-O3のオプションつけてベンチマーク測ったらgaucheよりも微妙に速かったのでブログに書きました。多分機能つけてるうちに遅くなります。 scheme $ make tak bin/picrin etc/tak.scm 1.135064 gauche $ gosh etc/tak-gosh.scm ;(time (f)) ; real 1.223 ; user 1.190 ; sys 0.000 一応R7RS準拠(予定)の処理系

  • mrubyで限定継続(shift/reset)を実装した話 - wasabizの日記

    2013-10-03 mrubyで限定継続(shift/reset)を実装した話 mrubyという組み込み向けのruby実装があります。中身のアーキテクチャはほとんどluaに近いんですがAPIとかがとても洗練されていてソースコードが読んでいてとてもふつくしい。登場からまだあまり時間が経っておらずコードが成熟していないという事もあってなかなかハックしがいがあるソフトウェアです。今回そのmrubyに限定継続オペレータのshift/resetを実装したのでその話を書いてみます。新規性としては 限定継続は家CRubyにも実装されていない 一部の言語の一部の処理系(scheme or ML)以外での実装はほぼ存在しない "Final Shift for Call/cc: Direct Implementation of Shift and Reset"は一つのスタックの上に特殊なフレームを詰んでい

  • JSXでLispつくってみた - IT系で覚醒めたい

    https://github.com/wasabiz/lisp.jsx あえてSchemeではなく伝統的なダイナミックスコープのLispを作ってみた。 ぱぱっと仕上げるつもりだったけど3時間かかってしまったので精進がたりない。 動的スコープLispの効率的な作り方でなやんで一時間ぐらい費やしたような気がするけどまぁきにしない。 結局は一番最初におもいついたsymbol-valueをstackにするという方法にした。 ていうかこんなんでいいのか…? 調べたかぎりschemeの作り方のノウハウはいっぱい見つかったけどLispのノウハウは全然見つからなかった。 なんでだろう。みんなschemeばっかりでLispを自作とかしないの… とにかく現時点で動くのはfactorialのみ。defun/progn/if/=/*/-しか実装していない。(quoteすらない!) JSXにしたのは特に理由はない。

  • 1