2008-01-01から1年間の記事一覧
こんなに簡単にいっていいのだろうか。 コンパイルフェーズをどう入れ込むかで頭がパンクしそうだが、なんだか一発で動いたっぽい。こんなんでいいのか。 jiji> (def z 1000) 1000 jiji> (def mc1 (mc (x) (list + x z))) jiji> (mc1 10) 1010 今度はsicpのa…
古典的マクロってどうやって実装するのか。 コンパイラフェーズで評価すればいいのかなぁ。 その際の環境をどうするべきかとか、ちょっと考えないとなぁ。末尾再帰最適化もやりたい。Lisp in small peacesとかいう本がどっかに転がっているはずなんだけれど、…
使ってみて不便だったら直す方向で。。 function js_new (fn, arg) { var ins={}; ins.__proto__=fn.prototype; var ret=fn.apply(ins, arg); if (ret instanceof Object) { return ret; } return ins; }
javascriptのnew演算子をwrapするところで詰まっている。 new TestObj(arg1, arg2) というのをメタプログラムしたいのだが、関数呼び出しの場合であればFunctionオブジェクトにapplyメソッドが用意されているので、簡単なのだけれど、new演算子の場合は、い…
休みの間に、javascript上で動作するLispと、自分用のwikiを作っておきたい。 まずはjavascript上のLispを実装してみた。 javascriptのapiをほとんどそのまま呼び出せて、+αでマクロが使えると便利かなぁと思っていたので、ゴチャゴチャ実装してみたが、なか…
とおもったら、schemeでもなさそうだ。。うーん、そんなもんか。 lookup-variableをapiで用意しないもんなのかな。
schemeでマクロ定義時に、ifや関数名にすべてwith-moduleを使えばいいのではないかという気がしてきた。 マクロを生成するマクロとかでもうまく動作するのかな。名前空間がレキシカルでわかれるから、すべてうまくいく気がする。パフォーマンスは大丈夫かな…
http://cadr.g.hatena.ne.jp/g000001/20080205そうかやっぱり。funcallは必須じゃない気がしてきた。 でもそうするとレキシカル空間とパケージ空間にわかれて、 同じシンボルがどちらをさすのかがファジーに特定されるということか。schemeの場合だとレキシ…
scheme(gauche?)のwith-moduleで、安全な古典的マクロがかけるのだろうか。万事解決なのか。
あー、なんだかcommon lispが最高な気がしてきたぞ。 安全なマクロ万歳なきがしてきた。
クールで将来性があるlisp2。実用的なlisp on javascript。レキシカルスコープのemacs like なターミナルエディタ。
エディタはemacs lispがメインなのだけれど、設定かえたり関数やマクロ書いたりするのに、ダイナミックスコープなため、すごく書きづらい。 まぁそれでもすばらしいものには違いないのだけれども。xyzzyはすばらしいのだけれど、windowsアプリなのがどうもな…
syntax-caseがすばらしいものなのならば、schemeはlispとして完全なものになる気がする。いまのところよくわからないから、古典的マクロが安全にかけるlisp2に引かれている。 でもlisp2って何なのかよくわからなくなってきた。 関数と変数の名前空間を分ける…
syntax-caseは複雑でよくわからん。 hygienicマクロには、ずっと関わらないようにしてきたけど、syntax-caseが気になり始めてそうもいかなくなった。define-syntaxはトップレヴェルでしか定義できず、そしてトップレヴェルの変数は特別扱いするということな…
文章が取り留めなさすぎる。何がいいたいのか自分でもわからない。
eval "my $a=10"; print $a; ## 何も表示されない あらびっくり。ろくなREPLが作れない。 my(レキシカル)変数が使えない。だから、perlのデバッガでmyが使えないのか。。
lispがいぢれなくてつらい日々が続く。
Lisp on Erlangすでにあった、動かせた。 なんか面白い。それにしてもどうして遅延評価じゃないんだろう。 扱いにくいからかな。Erlangで非決定的な計算を並列で実行したりできるのかな。http://forum.trapexit.org/viewtopic.php?p=40268
プリプロセッサとかになるのかな。 S式からerlangへのコードトランスレーターみたいな。 あんま意味無いのかな。 マクロで自分言語が作れるのはありがたい気がするけど。
scheme on schemeはSICPとかみて書いてみたけど、erlangを触ってみて、lisp on erlangを作るのはなかなかよいアイデアなのではないかという気がしてきた。Lisp-2で、old macroを兼ね備えたやつ。日本語対応とともに作れば、結構なキラー言語になるような。少…
もうすぐでるらしい。
http://www.dirkgerrits.com/programming/erlisp/結局はライブラリかといわれてしまいそう。yawsとかmnesiaとか。 termite schemeはまだ未成熟だって。
http://www.iist.unu.edu/~vs/haskell/dhs/
yet another web server.ちょっぱや。驚いた。 mnesiaもなんだかよさそう。erlang likeな機能を兼ね備えた、シンプルなlisp-2が出たらすごくはやる予感。 arcは並列処理については検討しているのかしら。erlang上のlisp言語とかも海外の掲示板などでちらほら…
prototypeは、参照する分にはあくまでもスタティックなフィールドを見るのだけれど、いったん更新してしまうと__proto__フィールドを隠蔽してしまうらしい。 var A = function(){}; A.prototype={a:1, incf:function(){ print(this.a++); }}; var a = new A;…
+ google app engine + google gear http://itpro.nikkeibp.co.jp/article/NEWS/20080610/307447/
すごい。希望がわいてきた。http://www.cdolivet.net/editarea/editarea/exemples/exemple_full.html http://www.codeide.com/ http://marijn.haverbeke.nl/codemirror/story.html
基本的にhtml要素なら高階タグ関数で何でもかけるようにしておこうと思うのだけれど、独自の便利なタグをいくつか準備したい。Tex的に構造的な文章を書けるようにしたいのだけれど、HTMLそのままじゃ基本的にだめ。CSSとかをいじれば、章番号を振るのとかで…
kahuaのウィザード的なところは便利だけど好きになれない。schemeの世界で完結していたほうがいいなぁ。まぁちょっと調べればどうにかなる気がするけど。 kahua odbは個人的にすごく惹かれる。スケーリングのさせ方とかリレーショナルでない情報検索の定石な…
とりあえず入力テキストをkahua odbで格納して表示するときにevalするという適当すぎるコードで動くものを作った。 (h2/ "hello kiki.") とか、S式で入力する感じ。しかしコレだとセキュリティ的に最悪なので、入力できるS式を制限する仕組みを考えてみた。 …