2009-01-01から1年間の記事一覧
9/19に盛岡で行われるquick speakersに行って来ようと思います。 とりあえず、言語は式ベースのほうが簡単ゆえに美しいって話をしてこようと思ってます。 いつも同じ事で申し訳ない気もするんだけどきにしない。 とにかく、今年一年で、ScalaとhaXeで書いて…
関数がクロージャになるように変更 みなさんは、クロージャってご存知でしょうか? 正確に説明となると難しいですが、簡単にいうと親の関数の環境も参照できる関数をクロージャといいます。 親の親の関数の環境も、親の親の親の関数の環境も、と祖先の環境を…
twitterの履歴を見てたら、なにやら、タグ指向言語がどうのという、話をalohaさんとid:RiSKさんが話してたので、 その話をしたいナァなどとつぶやいた。 そしたら、alohaさんが今からでもとかいいはじめ、YTさんがいろいろ話して 自分なりに考えがすこし進ん…
改行で後置括弧演算子を結合しないようにする。 if(a){ b; } { c; }上の例のようにif文の、後ろに括弧があった場合、ローカルブロックになるのがC言語です。通常の手法であればif文の後ろにローカルブロックがあるだけとできます。 しかし、今の式ベースの言…
後置演算子追加今回は、後置演算子を追加します。 後置演算子とは、後ろにつく演算子のことです。たとえば、1を足す演算子などがそれです。 i++ 今回作成する言語ではセミコロン';'も後置演算子として扱います。セミコロンは式と式を分離させる意味をもって…
今回は前回作った文演算子を使って、if文とwhile文を作ります。 これは、無名関数を作成するfunと同じ章で書くとよかったなと思うので、 次に書くときはまとめることを検討しないととおもいます。 というか、内部表現をいろいろ変えたのでそのへんでおなかい…
SiroKuroさんのトラックバックがあったので返信。たしかにfun(c)c+1 が文脈的に特別扱いしているように見えますね。修正しないと。 文演算子は無名関数以外にfor,if else ,while,do while,等とc言語の構文の多くを表すことを目的としています。だから、funを…
今回は関数の定義を追加してa=fun(c)c+1 a(2)で、3が返るようにします。 そのために、文演算子というものを用意します。 文演算子?はぁ???なにそれ?って思うと思いますが、 要するに symbol ( param1 ) param2というようにかける物を文演算子と呼ぶこ…
正直、haXeのenumとswitchのパターンマッチは微妙です。ウオー痒いところに手が届かないー switchが沢山になってしまうーって感じで、こんなはずではなかったんだけどなぁ。。。 ってなってます。まぁいいんだけど。それでもマクロが動くまでは書こうと思っ…
前回は括弧演算子を作りました。今回は後置括弧演算子を作ります。 後置括弧演算子とは、以下のような形のものとします。 関数呼び出し a() 配列アクセス a[] ブロック a{} C言語だと、関数呼び出しと配列呼び出し等にあたるものです。 {}はrubyのブロックの…
今回は括弧演算子を作ります。括弧演算子って何?って思うかもしれませんが以下のようなものを括弧演算子と呼びます。 括弧 () {} [] で、括弧の中身が空であることを表すために、vidという特別なものを作ります。voidにしたいのだけど、voidだとぶつかるの…
今回は変数を追加します。例)a = 1それと代入演算子は左結合と右結合の話もちょっとします。 同じ優先順位の演算子が2つ並んだ場合に、 どっちが優先して結合されるかっていうのが右結合とか左結合というわけ方になります。 変数への値の代入 変数への値の…
さて、今回はさらに簡略化しまっす。 パーサを手書きでどんどん増やすのも手なのですけど、メンドクサイので再帰下降型の演算子順位法を使って、演算子をいくらでも追加できるようなパーサの構造に変えます。今回作ったのは以下のソースです。 enum Exp { ni…
こんにちは。今日は3回目になりますね。 RubyのGCを弄り回しているid:authorNariさんがついにRuby1.8のGCの高速化を実現したそうです。 構文木の寿命が基本長いので隔離することで高速化できたようです。 すばらしいですね。継続は力なりだなぁっと思います…
さて今回は、2パスの計算機を作ります。 パスってのはプログラムを動かす上での段階ってかんじで、何段に分かれてるかをあらわすのにいいます。 前回は、パースしながら計算してたので1パスでした。 今回は、1パースした結果を構文木に保存する 2構文木…
haXeのホームページはこちらです。 http://haxe.org/?lang=jp日本語のページはこちら。 http://haxe.org/haXeのページの面白いところは翻訳機能のついたwikiだってことです。 おかげで、日本人の興味のある人が興味のあるページだけ翻訳って事が出来て非常に…
Flash上でFlashのコンパイルを出来るライブラリがそろっている言語。 私の中でHaxeとはそんな言語です。 今回はひとつ、頑張ってhaXeで俺言語を作るってのを書いていこうと思います。 どんな言語を作るかというと、Algol文法にLISPのマクロと同等の能力を持…
JavaをS式にしていじって戻せる。 S式とJava混在で余計わけわからない。 Algol文法のマクロ使える言語があればいいじゃないか!■Dylan 自分で作れそうにない。 ■Nemerle やっぱり自分で作れそうにない。 ■Sumi 俺俺言語 実装がごちゃごちゃ。 ■Scalaで書いて…
問題は括弧だらけ
エラーが異常。そもそもの目的に沿ってないのだから仕方ない。 ということで、どうあるべきなんだろう??? まず、現状の人気のある処理系から離れて考えてみるというか、 自分で考えてきたことを書く。
とりあえず、今現在の型レベルの計算ってなんでやってるのかなぁっと。現状の人気のある処理系でコンパイル時計算を行える。 元々の目的から離れたつかい方なので 基本的に一から作り出す面白さがある。 また、現在の処理系で動くので実益が得られる。 仕事…
なんか、非常に面白い話なので言ってみたかったのですけど、ものすごい人気だったようなので、 ちまちまと考えてみたことを書きます。 結論を先に書くと、TemplateHaskellの型の部分は推論できるところは書かないと短くかけて嬉しいんじゃないかと思います。…
http://labs.s-sd.org/langworldmap/ というのを作ってみてます。 これは乗せないとってのあったら教えてください。 D言語はDigital Marsはどこにあるんでしょか? LISPやSchemeはどこかとか。
スピードとかはぜんぜん考えてませんけど、nagasimaさんが言っていたツリーをたどる、 継続可能なインタプリタを作ってみました。 足し算しかできないけどこんな感じなのかなっと。 import java.util.Hashtable; class t{ public static void main(String ar…
dachasっちう、CSS NITEから派生した集まりに行ってきました。 初回ということで、無線LANつながんねぇとか、いろいろありましたけど、面白かったー。
http://d.hatena.ne.jp/nitoyon/20090409/kmeans_visualise 実は宇宙は空間子みたいなのに分割統治されてるんじゃないかとか妄想してたりします。 その空間子がもしもあったら、すべての粒子はどれかの空間子に属していて常に より近い空間子を検索して移動…
http://d.hatena.ne.jp/ytqwerty/20090319#p1キーボードの打ち方で肘を閉じて打て! ってのがなんか、カッコいいと思った。 でも、肘は開いてても、手を開かないというかなんというか、 こんなかんじに、手をもってれば、肘を開いてるかどうかは関係ないなと…
http://d.hatena.ne.jp/ytqwerty/20090318#p1プログラムをデータとして扱えるといえば、LISPですが、括弧だらけで普通のプログラマには 向いてません。 プログラムをデータとして扱っていろいろやれるCみたいな言語が自分が作っているsumi言語です。 Cyanは…
がいいです。 前に日記書いたはずなのだけどなと。 4月になったら時間が出来そうなので、ニコラス・ラブです。 先週は、SSDのあつまりやら、TDCやら、いろいろあって楽しそうだったのだけど 体調崩して、死んでました。むぅ。 というのはいいや。とにかく、…
http://shinh.skr.jp/m/?date=20090216 なんか、面白いなぁと思って考えてみました。 基本的に寝ているときにGCやら、デフラグをやるのだろうなぁと思います。 海馬あたりはGCっぽくて、大脳皮質あたりはデフラグに近いんじゃないかなぁ?夢もGCの一部と考え…