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

継続インタプリタ

やっぱり、継続をまちがえてたので修正した。 まだ間違えているかもしれない。

できるだけ短い継続インタプリタ

call-ccの実装がとりあえず出来たっぽいバージョン よくわかってないので、怪しい。

できるだけ短い継続インタプリタ

この間ものの継続渡しバージョン+α 今までのは、fiberみたいなものだったので、call-ccを作ろうと思ってるけど、出来てない。 call-ccの実装が出来てない(泣

とりあえず、只のインタプリタ。 こんなんでいいか。 <script> Array.prototype.toString = function(){ return "["+this.join(",")+"]"} Object.prototype.toString = function(){ var a = []; for(var i in this) a.push(i+":"+this[i]); return "{"+a.join(",")+"…

書きかけ 書いてたらだんだん眠くなってやめた。 環境とか、lambdaとクロージャとそのへん、こんがらがり中。 適当になってるのがよくないかんじ。 MiniDってののソースが気になる今日この頃ですけど、時間ね。 単なるゴミなかんじ。 <script> Array.prototype.toStr…

<script> Array.prototype.toString = function(){ return "["+this.join(",")+"]"} function eval(s,env){ function getEnv(env,a) { if (env[a] != null) return env[a]; if (env.parent == null) throw "error"; return getEnv(env.parent, a); } function setEnv…

継続付きインタプリタ(2)

今日は変数を定義して読み込んだり出来るように拡張します。 そのために、環境を導入します。 function eval(s){ if (s instanceof Array) { switch(s[0]){ case "add": return eval(s[1]) + eval(s[2]); case "mul": return eval(s[1]) * eval(s[2]); } } r…

12行で書ける継続付きインタプリタ

どうも、継続がよくわからないので、とても短いサンプルを作ってみました。 ["mul", 3, ["add", 1, 4]] のようなjsonデータを読み込み、実行すると15を返すような インタプリタを作ると以下のようになります。 function eval(s){ if (s instanceof Array) { …

secdマシン再び

miniSchemeのソース読んだり、secd maniaのソースを読んだり、 d言語に移植したり、javascriptに移植したりして勉強してます。 継続の実装を10分でできるようになりたいのだけど、いまだわからん。 いや、だいたい、わかってるとおもうんですけどねぇ。 う…

いろんな言語のパーサライブラリ

いろんな言語のパーサが、1つのインターフェイスで扱えるとよいよなぁ。 どっかにまとまってないのかなぁ。 その結果が、例えばS式なりXMLなりになってくれると嬉しいような気がする。 元に戻るのもあると、より嬉しい。 どこにもまとまってないなら、まと…

演算子を分かりやすく内部管理する方法

a = --x + y++は "="(a, "+"( "--"(x), "++"(y) )や assign(a, add( dec(x), inc(y) )と考えるのが普通です。 しかし、xoxが2項演算子、xoが前置単項演算子、oxが後置単項演算子、xoyがうんたら再帰の2項演算子として xoy(a, "=", xox( xo("--", x), "+", o…

Ruby on Rails勉強会があるらしい

仙台でRuby on Rails勉強会をやってるらしいです。 そのために、Rubyをやろうかと思います。 Rubyは3日くらいしかやってないんですが。。。

いっちょやってみるかぁ。

河北新報SNSのふらっと内で、仙台でオープンソースカンファレンスを やってみっぺし。っていう話が出てたりします。 んでも、jpug-tohokuだとDB系のカンファレンスに限るみたいで、 言語系の集まりはできないとのこと。 言語系なら、音頭取って見ないかと…

仙台プログラマを探そう

引き続き捜索中です。というか、単にgoogleで検索してるだけだけども。 とりあえず、ブログにコメントを残してきました。 はて、べつに面白いネタでもないなぁと思いつつ、いや、それは俺も一緒だろうみたいな 一人突っ込みをしてみたりしてて。 まぁいいん…

仙台のプログラマーいないかぁ???

無意味に、プレゼンしてみたいとかいう欲求があります。 てきとうに、場所借りてパソコンつないでプレゼンごっこしたい気分です。 仙台で、SICP読書会したいー。 東北で、オープンソースのコンベンションとかいきたいー。 というか、プログラミング言語作り…

決定性有限オートマトン

wikipediaの例をjavascriptで書いてみました。 <script> var M = { sigma:["q0","q1"], S:[0,1], T:{ q0:function(s){return s == "0" ? "q1" : s == "1" ? "q0" : null; }, q1:function(s){return s == "0" ? "q0" : s == "1" ? "q1" : null; } }, s:"q0", A:["q0"]…

オートマトン

オートマトンがじつはよくわかってないので、いろいろ見てみてます。 自動人形であるとか言う話は置いといて、実装しようとするとなかなか。。。 情けない。 逆にいえば、はっきりオートマトンが分かれば、何かと都合がいいと 思っています。 受理したときは…

Lazyなライセンスが欲しいらしい。

ニコニコ動画の話で、、、。やっぱり、ひろゆきはすげぇなぁとおもった。 企業が遅延評価戦略を行えるライセンスがほしいらしい。Lazy Licenceですな。 普通に取った動画がいまいち広まらないっちうのは、映画研究会とかのネガ離れが なかなかできていないっ…

正規表現にマッチする例

http://www.kmonos.net/wlog/73.html#_1543070517どうせやるなら、例にマッチする正規表現を作るもののほうが有用じゃないかとおもってやってみました。 ウソです。妄想して終わってます。w

風邪引いた

39度3分まで出た。死ぬかと。はしかかと。インフルエンザかと。いや、ただの風邪かと。色々悩んでしまいました。

コメントかいてたら長くなったので次の日に書いてみる。

xtalcoさんから早速コメント貰ってしまいました。 >windowsバイナリ タイムリーだったんですね。 >常に複文 短く書きたい場合を考慮すれば普通かもしれないですね。 常に複文でもelifとか用意するひつようはないと思いますけど。 >ixのエラー (fun(){return …

バグ発見

ix.exeで ix:012>b:fun(i) return i; Error: <ix>:12:構文エラーです。となった後、死にます。win2000です。</ix>

windowsバイナリー

http://d.hatena.ne.jp/xtalco/20070513 日記に書いたら早速id:xtalcoさんが、windowsバイナリ作ってくれてしまいました。 恐縮です。ってことで、早速さわってみました。 switch文のcaseは文を呼ぶらしいということでやってみました。 ix.exeを起動して、 i…

switch文。

http://d.hatena.ne.jp/xtalco/20070511 switch(a){ case(1){} case(2){} default{} }と書くそうです。 なんか、統一性がない気がする。 Xtalは関数が単文あるいは複文が関数の中身になるのだから、 switch(a){ case(1)文 case(2)文 }になって、 switch(a){ …

新言語 Xtalを作る日記が再開

http://d.hatena.ne.jp/xtalco/ C++で書かれた組み込み用スクリプト言語xtalの作者のblogが再開しました。 言語作ったら次は宣伝して多くの人に使ってもらいたかったりしてくると思います。 どんなにすばらしくても、話題ないと、広まらんというかなんという…

仙台のSNS

仙台の地方紙、河北新報がやっている「ふらっと」というSNSが最近始まりました。 なんか、mixiとかとちがって、外部のブログと内部のブログを混在表示できるらしいのでテスト中。 URLはこちら。 http://flat.kahoku.co.jp/ おれのURLはここになってます。…

具体的な成長するパーサの例

最初は、数字だけ読むパーサexpがあるとする。 var exp = function() { return match?_ : $(/^[0-9]+/) ? Number(get()) : _ ? error("error") :match; }; alert(parse("1+2*3")); これは実行すると、 1が返る。 これを拡張して、足し算が出来るようにする。…

文法を途中で追加できるパーサライブラリ

2chでの話。 うわー。ってかんじ。実力ないので、作れそうにないっす。泣 俺に出来るとしたら、パーサコンビネータの コンパイラ・インタプリタみたいなもんだろう。 それを、カスタマイズして文法関数呼び出し部分でフックするイメージだ。 ilogscriptは…

多分ブレイクする

AdobePlayerってのを出すらしい。 これはかなりの可能性を秘めているとおもう。 デザイナーの指示が得られるってのも大きいだろう。 一番理想的なのが、プログラマよりもデザイナーが先に、 アプリケーションを作れてしまうって状況だろう。 プログラマはApp…

やるきないので、放置してた奴公開してこー

とりあえず、ドリフト出来て、画面傾いてGを感じるらしいげーむ。 http://sakurai.s59.xrea.com/ タイムアタックができます。おしまい。