aaaa

>>aaa

ddddd

新コーナー立ち上げ延期。。

Erlang...

green thread, immutable, Operating System..... ぐるぐる回る。beamとかいうVMが萌えの対象か???だとすればその上に言語を構築すればいいのか???

MOZART

こないだツンドクしてたガウディ本をぱらぱらみてたら、MOZARTって、Lispと同等の力を持っていそうだ。 カーネル言語とその拡張という形でいろいろなモデルを実現しているので、自由にDSLがかけそう。ただ、記述したDSLはMOZARTではないかもしれないので、そ…

仕事の下準備

新規コーナーのサイトスケッチにHAppSを使ってみようと画策中。arc's challengeにはHAppSの投稿がなかったけれど、どうなんだろ。 arcより短くかけたら面白いな。理解すればするほどHaskellってPrologと似ている。 ユニフィケーションとパターンマッチか。 P…

↓ まぁ、

JavaScript on Safariは間口が開いているのだけれど。

iPhoneはオープンになるのか

携帯をiPhoneに切り替えて結構たつが、実にクールである。 いくつか気になる欠点はあるのだけれど、それも忘れてしまうほど圧倒的な完成度である。しかしながら非常に大きな欠点が一つだけある。アプリケーションの配布がオープンでないことである。オープン…

jijiスケッチ

1000行くらい。quasiquoteの実装半ば。バグだらけ。 JavaScriptの作法が分からないうちに書き始めたから、へんてこ。 といういいわけをしてもしかたがないほど恥ずかしいが、休日に書いてみたものを下記に出してみる。 評価のタイミングを整理できていないの…

悩みどころ

read関数がconsセルを返却する実装にしてみたが、JavaScriptの関数引数は配列なので、読み替え処理が無駄だ。 配列で保持しておいて、評価の際に遅延評価的に読み替える方がいいかどうかで悩む。

パッケージの実装方針について

continuationは、今のところあまり実装するつもりはないのだが、現在のレキシカル環境へのポインタを名前つきでグローバルなハッシュテーブルに登録できるようにしておき、 レキシカル空間を名前で指定して実行できるシンタックスを作る。 レキシカル空間で…

やるべきではないとおもうが。

誰しも考えそうなことだが、クロージャの永続化とかってやるべきではないのだろうけれど、シリアライズのやり方とかを工夫して、パフォーマンスを度外視すれば簡単にできそうな気がしてきた。 言語レベルでネットワーク透過性とか色々盛り込んでしまえば、継…

マクロでもやもやと

嫁の買い物とか初詣に付き合う間、Lispで悶々と考え事をしていた。マクロの展開処理を記述している時に悩んでいたことを考え直している間に、あたりまえのことに気づいた。 Lisp1で古典的マクロは問題があるという認識であったが、関数とかシンタックスとか…

汎変数2

読み替えて実行するような感じで実装してみたけれど、マクロ展開を先にやる必要がありそうだ。 特殊フォームとか、いまのところどこで評価させるかが統一感がなくて気持ち悪い。 処理系って結構むずかしいなぁ。

汎変数

うーん。下記の場合、の最外のアクセス関数を、対応する破戒関数に読み替えて実行すればいいのかなぁ。 (set! \ 10)

jiji残件

Lisp on JavaScriptの残件。あーもう金曜日だ。 つらいなぁ。休日が終わる。 汎変数まわり。set!でsetf的動作をさせないと。 適用可能オブジェクト化。ハッシュとかarrayを適用可能オブジェクトにすると、Javascriptと親和性いいかも。$("xx").text("hello")…

古典的マクロ実装完了

こんなに簡単にいっていいのだろうか。 コンパイルフェーズをどう入れ込むかで頭がパンクしそうだが、なんだか一発で動いたっぽい。こんなんでいいのか。 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はトップレヴェルでしか定義できず、そしてトップレヴェルの変数は特別扱いするということな…