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

古典的マクロ実装完了

こんなに簡単にいっていいのだろうか。 コンパイルフェーズをどう入れ込むかで頭がパンクしそうだが、なんだか一発で動いたっぽい。こんなんでいいのか。 jiji> (def z 1000) 1000 jiji> (def mc1 (mc (x) (list + x z))) jiji> (mc1 10) 1010 今度はsicpのa…

古典的マクロ、末尾再帰最適化、Lisp2化、web用のrepl

古典的マクロってどうやって実装するのか。 コンパイラフェーズで評価すればいいのかなぁ。 その際の環境をどうするべきかとか、ちょっと考えないとなぁ。末尾再帰最適化もやりたい。Lisp in small peacesとかいう本がどっかに転がっているはずなんだけれど、…

うーん。Date以外で動くからとりあえずいいかなぁ。

使ってみて不便だったら直す方向で。。 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; }

Lispからjavascriptのオブジェクトを生成したい

javascriptのnew演算子をwrapするところで詰まっている。 new TestObj(arg1, arg2) というのをメタプログラムしたいのだが、関数呼び出しの場合であればFunctionオブジェクトにapplyメソッドが用意されているので、簡単なのだけれど、new演算子の場合は、い…

javascriptで俺Lisp

休みの間に、javascript上で動作するLispと、自分用のwikiを作っておきたい。 まずはjavascript上のLispを実装してみた。 javascriptのapiをほとんどそのまま呼び出せて、+αでマクロが使えると便利かなぁと思っていたので、ゴチャゴチャ実装してみたが、なか…

javascriptである変数が束縛済みかどうか調べるてだてがない。

とおもったら、schemeでもなさそうだ。。うーん、そんなもんか。 lookup-variableをapiで用意しないもんなのかな。

with-moduleですべて解決した気がする。

schemeでマクロ定義時に、ifや関数名にすべてwith-moduleを使えばいいのではないかという気がしてきた。 マクロを生成するマクロとかでもうまく動作するのかな。名前空間がレキシカルでわかれるから、すべてうまくいく気がする。パフォーマンスは大丈夫かな…

lisp-2

http://cadr.g.hatena.ne.jp/g000001/20080205そうかやっぱり。funcallは必須じゃない気がしてきた。 でもそうするとレキシカル空間とパケージ空間にわかれて、 同じシンボルがどちらをさすのかがファジーに特定されるということか。schemeの場合だとレキシ…

with-module

scheme(gauche?)のwith-moduleで、安全な古典的マクロがかけるのだろうか。万事解決なのか。

名前空間

あー、なんだかcommon lispが最高な気がしてきたぞ。 安全なマクロ万歳なきがしてきた。

欲しいもの

クールで将来性があるlisp2。実用的なlisp on javascript。レキシカルスコープのemacs like なターミナルエディタ。

そしてemacs lispは

エディタはemacs lispがメインなのだけれど、設定かえたり関数やマクロ書いたりするのに、ダイナミックスコープなため、すごく書きづらい。 まぁそれでもすばらしいものには違いないのだけれども。xyzzyはすばらしいのだけれど、windowsアプリなのがどうもな…

そしてlisp2とは

syntax-caseがすばらしいものなのならば、schemeはlispとして完全なものになる気がする。いまのところよくわからないから、古典的マクロが安全にかけるlisp2に引かれている。 でもlisp2って何なのかよくわからなくなってきた。 関数と変数の名前空間を分ける…

未だによくわからないこと

syntax-caseは複雑でよくわからん。 hygienicマクロには、ずっと関わらないようにしてきたけど、syntax-caseが気になり始めてそうもいかなくなった。define-syntaxはトップレヴェルでしか定義できず、そしてトップレヴェルの変数は特別扱いするということな…

なんだか日本語がかけない

文章が取り留めなさすぎる。何がいいたいのか自分でもわからない。

perlのevalがダメすぎる件について

eval "my $a=10"; print $a; ## 何も表示されない あらびっくり。ろくなREPLが作れない。 my(レキシカル)変数が使えない。だから、perlのデバッガでmyが使えないのか。。

仕事に忙殺されている

lispがいぢれなくてつらい日々が続く。

Lisp on Erlang

Lisp on Erlangすでにあった、動かせた。 なんか面白い。それにしてもどうして遅延評価じゃないんだろう。 扱いにくいからかな。Erlangで非決定的な計算を並列で実行したりできるのかな。http://forum.trapexit.org/viewtopic.php?p=40268

自分Lisp on Erlangの件

プリプロセッサとかになるのかな。 S式からerlangへのコードトランスレーターみたいな。 あんま意味無いのかな。 マクロで自分言語が作れるのはありがたい気がするけど。

自分Lispを実装する言語

scheme on schemeはSICPとかみて書いてみたけど、erlangを触ってみて、lisp on erlangを作るのはなかなかよいアイデアなのではないかという気がしてきた。Lisp-2で、old macroを兼ね備えたやつ。日本語対応とともに作れば、結構なキラー言語になるような。少…

実際的なhaskell本

もうすぐでるらしい。

みんなerlang like lispを欲している。

http://www.dirkgerrits.com/programming/erlisp/結局はライブラリかといわれてしまいそう。yawsとかmnesiaとか。 termite schemeはまだ未成熟だって。

Haskell, Erlang

http://www.iist.unu.edu/~vs/haskell/dhs/

yaws, Erlang

yet another web server.ちょっぱや。驚いた。 mnesiaもなんだかよさそう。erlang likeな機能を兼ね備えた、シンプルなlisp-2が出たらすごくはやる予感。 arcは並列処理については検討しているのかしら。erlang上のlisp言語とかも海外の掲示板などでちらほら…

javascriptのprototype

prototypeは、参照する分にはあくまでもスタティックなフィールドを見るのだけれど、いったん更新してしまうと__proto__フィールドを隠蔽してしまうらしい。 var A = function(){}; A.prototype={a:1, incf:function(){ print(this.a++); }}; var a = new A;…

HTML5.0はいつのはなしやら

+ google app engine + google gear http://itpro.nikkeibp.co.jp/article/NEWS/20080610/307447/

JavaScriptでS式の入力補助を

すごい。希望がわいてきた。http://www.cdolivet.net/editarea/editarea/exemples/exemple_full.html http://www.codeide.com/ http://marijn.haverbeke.nl/codemirror/story.html

[kiki] kiki記法について検討

基本的にhtml要素なら高階タグ関数で何でもかけるようにしておこうと思うのだけれど、独自の便利なタグをいくつか準備したい。Tex的に構造的な文章を書けるようにしたいのだけれど、HTMLそのままじゃ基本的にだめ。CSSとかをいじれば、章番号を振るのとかで…

いろいろ気になる点

kahuaのウィザード的なところは便利だけど好きになれない。schemeの世界で完結していたほうがいいなぁ。まぁちょっと調べればどうにかなる気がするけど。 kahua odbは個人的にすごく惹かれる。スケーリングのさせ方とかリレーショナルでない情報検索の定石な…

kiki記法

とりあえず入力テキストをkahua odbで格納して表示するときにevalするという適当すぎるコードで動くものを作った。 (h2/ "hello kiki.") とか、S式で入力する感じ。しかしコレだとセキュリティ的に最悪なので、入力できるS式を制限する仕組みを考えてみた。 …