2008-10-09
型推論が動き出した
yarv2llvmを作っています。とりあえず、型推論が動き出しました。まだ、fixnumとfloatしか対応していませんが、それなりに判断しているみたいです。
ソースは http://github.com/miura1729/yarv2llvm/tree/master にあります。
こんな感じのプログラムを食わせてみると
def foo(sx, sy, sz, n) vx = -sx vy = sy + 1.0 vz = sz if vx == 0.0 then vs = Math.sqrt(vx * vx + vy * vy + vz * vz) vx = vx / vs end n = n + 1 vy = vy / vs vz = vz / vs end def bar(n) n + 1 end def baz(n) Math.sqrt(n) end
こんな感じで型を推論します。最初の関数がなぞですが、まだ追ってないです。
:() -> symbol foo :(float, float, float, fixnum, ) -> float bar :(fixnum, ) -> fixnum baz :(float, ) -> float
引き続き、llvmに落とすところを作っていきます。
コメントを書く
トラックバック - http://d.hatena.ne.jp/miura1729/20081009/1223522251
リンク元
- 19 http://www.rubyist.net/~kazu/samidare/
- 8 http://www.google.co.jp/search?q=jemallocを読んでみる&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP-mac:official&client=firefox
- 3 http://d.hatena.ne.jp/keyword/LLVM
- 2 http://d.hatena.ne.jp/keyword/レポジトリ
- 2 http://www.google.co.jp/search?q=ruby/tk+アニメーション&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a
- 1 http://a.hatena.ne.jp/fujita-y/
- 1 http://blog-search.yahoo.co.jp/search?p=lisp&ei=UTF-8
- 1 http://d.hatena.ne.jp/gamella/20080329/1206760587
- 1 http://d.hatena.ne.jp/keyword/処理系
- 1 http://d.hatena.ne.jp/keyword/mmap