2008-02-01から1ヶ月間の記事一覧

継続ベース

perlでweb書いてるけど、perlでもCPSを用いた継続ベースWebアプリがかけるはず。 なんか、情報引継ぎを手で書いていると人間コンパイラになった気分。継続ベースのアプリって、やっぱりリソース食うのかなぁ。

bgm

宇多田ヒカルはどんどん凄くなっていくなぁ。新曲が凄くいい。Heart Station.after dark 的な、深海的な、電波的な、なんか一人で都会の中にいる感じがヒリヒリとする。トラベリング以降、凄く好きになったのだけど、最近特にトランスでありながら絶妙にキャ…

bknrのodb

prevalenceモデルらしい。なんだ。 RAMに全てを持つって、大丈夫なのかな。 Linuxのpagingだより?いまいちな気がしてきた。用途にもよるんだろうが。トランザクションをサポートしている。odbとは違うと言っているのか?slotにインデックスを張る。クラスを…

たくさんありすぎるプロダクト

hunchentoot : clのwebserver. araneidaと同じ位置付けか? tbnl : hunchentootのformal name? bknr : javacriptトランスレータ。odb。テンプレートシステムなど。参考になりそう

研究対象追加

arc

bknr のodbとlisp->javascriptsトランスレーター

目下の課題

arc

道具をそろえる。 arcがまだ手に馴染んでいない。永続化。 allegro cacheの研究 kahua object db の研究 bdbの研究 必要に応じてdb自作。とりあえずAPI決定。実装はその場しのぎ。 プレゼンテーション。 htmlマークアップの生成関数群そろえる(arcの延長) ja…

dbをどう作るか

どうしようかなぁ。 既存のodbをとりあえず使ってみるか。

無名関数の略式

arc

1引数ラムダを下記で示すのであれば、 [ + _ 10 ] 0引数ラムダを下記で示すのも欲しい。 { + 10 10 } あれ、サンクとかに必要にならない?

レキシカル環境を永続化ってできるのか

ボトムアップということで、永続化の仕組みを考える必要がある。 オブジェクトDBの要件洗い出しや既存プロダクトを調べる必要あり。

aform, fnid

arc

CPS形式でwebのシーケンスを記述できる仕組みはfnid関数で 継続のキー作成 管理テーブルに継続を登録 継続を必要とするhttpリクエストは管理テーブルから継続を取得 ということをやっている。 call/ccというよりCPSなのね。lambdaが頭の中でぐるぐるとしてき…

モジュール化

arc

arc forumでもmoduleの必要性について議論がある。 afnで生成した無名関数をwithでレキシカル環境にバインドする。 モジュールロード用の関数をdefで定義する。 モジュールロード用の関数がexportするものを格納したテーブルを返す。 みたいな仕組みでどうに…

パッケージシステム

arc

名前空間1つだとつらい感じがする。 pgみたいに短い名前を多用するスタイルだと特に名前空間の分割が要りそうな気がするけど、どういう手法をとるべきなんだろう。

[arc] arc2リリース

http://arclanguage.org/item?id=3426forumのソースがついてくるらしい。

あほだなぁ。

arc on javascript http://halogen.note.amherst.edu/~jdtang/arclite/

やっぱりLispの方がいいなぁ

気になるけれど、スケッチを書くように書くことはできなさそう。 遅延評価は気になるけど、問題領域を絞ってmacroで実現する方向でいいかなぁ。パターンマッチングの仕組みは確かに宣言的な気がする。 ifすらいらないし。 lispに組み込めないのかなぁ。

野望

arc

Webの開発を抽象的にやりたい。 確かにarcではスケッチを書くようなWebアプリ開発ができる気がする。 Javascript(AJAX)の統合とかもLISPならできそう。 Javascriptとのシームレスな連携。 lisp -> Javascriptへのコード変換の仕組み サーバープログラムの一…

なんだろ。

パタンマッチ → 評価開始 → 遅延評価なので宣言的にかける?マクロのようなコードジェネレータは要らないのか? 構文を関数でかけそうだから、必要ないのかな遅延評価は全てが継続っぽいし。on lispのマクロで実現していてhaskellで実現不可能なことってある…

applyについて

arc

下記でapplyの所とかがすっと出てこないなぁ。 ,g の部分がリストになるからapplyじゃないと適用できないのだけれど。evalとapplyの超循環にも似ているけれど、それほどたいそうな話しでもなさそうだし。 ,gのところを,@gとかするのはアホな勘違いだし。 何…

macroの展開順番

arc

arc.arcのソースを見たらcomposeの下でw/uniqとかaifを定義しているからuniqとかifを使っているようだ。 意図してのことなのか。macroは評価順を気にする必要があるのか。arc.arcの一番下に下記を置いたら一応動いた。 idfnのところってどういう意図なんだろ…

compose の実装

arc

なかなか美しかった。 on lispだと、変にcomposeと別の機能が一緒くたになっていて無駄に複雑な気がする。 applyのあとのifはawhenでいい気がするのと'idfnというダミー値(?)はよくわからん。ああ、labelsがないのはLisp-1だからなのか。もしかして。 い…

gensymの代わりはuniq

arc

afnも組込まれてた。

arc

composeの定義を見たら、afn発見。だけれどもrfnとの住み分けが不明。 rfn要らないんじゃないか? たまたまふたつあるだけかなぁ。 uniqをletで使っているのだけれど、この頃にはw/uniqがなかったのかなぁ。

アナフォリックマクロとperlの特殊変数

arc

アプローチが似ている気がする。 情報の伝達にグローバル的なものを使うという点でかしら。大した類似性でもないか。あ、でもLarryが「特殊変数を使うべきだ。代名詞を使うように。」みたいなことをラクダ本に書いてたから、やっぱり起源は同じだな。aandの…

=の挙動。

arc

ソース見てみないとだけれど、defineとset!を兼ねてる感じなのか。 レキシカルスコープで存在しない変数を=で設定したら、グローバル変数になってしまう。既存の変数だと思って設定しようとしたらタイポでグローバル変数作ってしまう感じ? 多少ラディカルだ…

多値

多値の有用性について本質的に理解できているわけではないのだけれど、arcで多値は使えないのかな。 letとかwithでつじつまあわせているようにもみえる。 まあ、いいのかなぁ。 arc> (let (x y z) (list 1 2 3) (prn x "," y "," z )) 1,2,3 1

アナフォリックマクロ

arc

良く使うパターンをマクロ化する典型だったんだ。 if等で評価したものを後に使いまわすことは仕事でも良くアルパターンで、同じようなコードをいつも書くのだけれど、エレガントではない気がしていたが、答えはこれだったんだ。 perlで実現出来ないものか。p…

計算効率化のためのマクロ

arc

inは引数の評価を先送りすることで計算量を効率的にしている。 つまり遅延評価なんだなぁ。マクロ手法をいろいろ見てると必死で評価を先送りして、抽象的にかつ計算量を少なくしようとしているように見える。遅延評価といえば、haskell。 haskellの力の源泉…

集合演算

arc

inがあらかじめ用意されているようだ。 inqじゃないのね。 arc> (in 'a 'a 'b 'c) t

マクロ展開形

頭がこんがらがるので。メモ。 `(1 2 3 ,@(mapcar #'(lambda (c) 'c) x)) (1 2 3 C C C) `(1 2 3 ,@(mapcar #'(lambda (c) c) x)) (1 2 3 99 89 89) `(1 2 3 ,@(mapcar #'(lambda (c) `',c) x)) (1 2 3 '99 '89 '89)

wiki的ページは簡単に書けてきた。

arc

blogのソースを盗みまくったらwiki的なページは結構簡単にかける。 wiki記法とかのパースは全然できてないけど。 画面遷移は継続で楽にかけるけど、どんな抽象化をしてるのか実装見ないと不安。キーワードに関する情報をいろいろ集めて表示するページを前か…