2008-01-01から1年間の記事一覧

0.3.1リリース

http://happyabc.orgいままでは不正なコードコンパイルすると、単純に例外を投げるか不正なABCを生成してました。今回からは、ある程度そういったエラーを検出できるようになりました。 $ habc-scm if.scm if.scm:0: synatx error, malformed syntax (if x) …

0.3.0の予定 - エラーレポート

次は、より詳しいエラーメッセージを表示できるようにする予定です。 今のエラーメッセージ $ habc-scm.run if.scm Fatal error: exception Lisp.Syntax_error("")例外をそのまま表示している。 次のエラーメッセージ $ habc-scm if.scm if.scm:0: synatx er…

HappyABC 0.2.0リリース

http://happyabc.orgMinGWなどと格闘しつづけて、やっとWindowsでビルドできるようになりました。このときのボクの苦労のあとがhttp://happyabc.org/build%252Fwindows.htmlにあります。 新機能 cond式のサポート Windowsバイナリの提供開始 その他の機能な…

0.2.0の予定 - Windows対応

次はWindowsでコンパイルできるようにしたいです。 Cygwinを使えば楽にコンパイルできると思ってたけど、そうでもないらしい。よくよく考えるとWindows上のOCamlは全機能が使えないんだった。あと、シェルスクリプトも使えないから、バッチファイルに移植し…

HappyABC 0.1.0リリース

http://happyabc.org一段落したので、いったんリリースします。 これはなに? Flashのフォーマットであるswfを生成することを目的としているSchemeコンパイラです。 できること ActionScriptのかわりにSchemeを使って、Flashプログラミングができます。 イン…

やっとバグがとれた

クラス定義に関するバグがやっと落ちついてきました。 ドメインもとったし、そろそろ最初のリリースを出す準備をしようと思います。

オブジェクトシステムをCLOS風に変更

http://github.com/mzp/scheme-abc/tree/master今までのダサいオブジェクトシステムをやめて、CLOS風にしました。 CLOS風といっても、メソッドコンビネーションやMOP(メタオブジェクトプロトコル)は持っておらず、単純に文法だけを真似をした。あんまりパワ…

Liteweight OCaml的な

http://www.libspark.org/browser/ocaml/abc2xml/abc.mlABC2XMLでは多相バリアントとpa_ooによる疑似多相レコードをひたすら使ってます。 let abcFile stream = {| minor_version = u16 stream; major_version = u16 stream; constant_pool = constant_pool …

ABC to XMLを作ってます

http://www.libspark.org/browser/ocaml/abc2xml けっこう迷ったけど、やっぱりABCをswfmill用のXMLに変換するプログラムを別に作ることにしたよ。scheme-abcがXMLを吐けるように改造するとか、SWFを吐けるようにするとか色々考えたけど、これが一番すっきり…

なぜSchemeなのか?

本当はSchemeじゃなくて、強い型付けと型推論を持った言語がよかったんです、OCamlとかSMLとか。 でも、OCamlとかだとパーサ部分が相当大変な気がしたので、とりあえず構文解析が楽そうなLisp系にしました。個人的にはCommonLispのほうが好きなんだけど、最…

Swfへ埋め込みに成功したよ!!

とうとうSwfに埋め込むことに成功したよ!やった!! (define-class Hello flash.display.Sprite ((init) (let [(t (new flash.text.TextField))] (invoke t appendText "Happy-abc") (invoke this addChild t)))) 埋め込みにswfmill+シェルスクリプトを利用し…

クラスをサポートしよう(2) -名前空間のサポート-

親クラスに名前空間が使えるようになった。 (define-class Foo flash.text.Sprite ((init) "hello")) R5RSでは名前空間は言及されていないから、悩み所。 CommonLispはパッケージを持っているものの、階層的なパッケージについては言及してない。 とりあえず…

クラスをサポートしよう(3) -newのサポート-

Add: "new" special form to create instance from class. · mzp/scheme-abc@dcd17b6 · GitHub クラスからインスタンスを作るためのnewを追加しました。 (define-class Foo Object ((init) (print "hello"))) (new Foo)CLOS的にはmake-fooみたいな関数を作る…

クラスをサポートしよう(1) -クラスの定義-

swfを生成するためにはクラスが必要不可欠なので、クラスをサポートできるようにがんばってる。 ただ、CLOSは荷が重すぎるので、独自のクラスシステムになっている。 (define-class Foo Object ((init) "hello")) をコンパイルすると class Foo extends Obje…

実装しない機能

こんな機能は実装しないよ。 作業量が多い、もしくはABC的に不可能な機能。 CLOSやMOPなどActionScriptの範囲を越えるオブジェクトシステム Flash8以前のサポート 継続、スレッドサポート ポリシーとして実装しないやつ。 単純なset!による破壊的代入。もっ…