2008-02-24から1日間の記事一覧

なんだろ。

パタンマッチ → 評価開始 → 遅延評価なので宣言的にかける?マクロのようなコードジェネレータは要らないのか? 構文を関数でかけそうだから、必要ないのかな遅延評価は全てが継続っぽいし。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記法とかのパースは全然できてないけど。 画面遷移は継続で楽にかけるけど、どんな抽象化をしてるのか実装見ないと不安。キーワードに関する情報をいろいろ集めて表示するページを前か…

汎変数

いけないと思いつつ、コンテンツの享受(つまり本を読む)。 on lispより。setfの引数は汎変数なんだ。しらなかった。なんとなく使ってた。 arcの=の引数も汎変数じゃないか。あーよくわからない。define-modify-macroを使えば楽に汎変数として動作するマク…