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…
今日は変数を定義して読み込んだり出来るように拡張します。 そのために、環境を導入します。 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…
どうも、継続がよくわからないので、とても短いサンプルを作ってみました。 ["mul", 3, ["add", 1, 4]] のようなjsonデータを読み込み、実行すると15を返すような インタプリタを作ると以下のようになります。 function eval(s){ if (s instanceof Array) { …
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をやろうかと思います。 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 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>
http://d.hatena.ne.jp/xtalco/20070513 日記に書いたら早速id:xtalcoさんが、windowsバイナリ作ってくれてしまいました。 恐縮です。ってことで、早速さわってみました。 switch文のcaseは文を呼ぶらしいということでやってみました。 ix.exeを起動して、 i…
http://d.hatena.ne.jp/xtalco/20070511 switch(a){ case(1){} case(2){} default{} }と書くそうです。 なんか、統一性がない気がする。 Xtalは関数が単文あるいは複文が関数の中身になるのだから、 switch(a){ case(1)文 case(2)文 }になって、 switch(a){ …
http://d.hatena.ne.jp/xtalco/ C++で書かれた組み込み用スクリプト言語xtalの作者のblogが再開しました。 言語作ったら次は宣伝して多くの人に使ってもらいたかったりしてくると思います。 どんなにすばらしくても、話題ないと、広まらんというかなんという…
仙台の地方紙、河北新報がやっている「ふらっと」という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/ タイムアタックができます。おしまい。