2008-02-24から1日間の記事一覧
パタンマッチ → 評価開始 → 遅延評価なので宣言的にかける?マクロのようなコードジェネレータは要らないのか? 構文を関数でかけそうだから、必要ないのかな遅延評価は全てが継続っぽいし。on lispのマクロで実現していてhaskellで実現不可能なことってある…
下記でapplyの所とかがすっと出てこないなぁ。 ,g の部分がリストになるからapplyじゃないと適用できないのだけれど。evalとapplyの超循環にも似ているけれど、それほどたいそうな話しでもなさそうだし。 ,gのところを,@gとかするのはアホな勘違いだし。 何…
arc.arcのソースを見たらcomposeの下でw/uniqとかaifを定義しているからuniqとかifを使っているようだ。 意図してのことなのか。macroは評価順を気にする必要があるのか。arc.arcの一番下に下記を置いたら一応動いた。 idfnのところってどういう意図なんだろ…
なかなか美しかった。 on lispだと、変にcomposeと別の機能が一緒くたになっていて無駄に複雑な気がする。 applyのあとのifはawhenでいい気がするのと'idfnというダミー値(?)はよくわからん。ああ、labelsがないのはLisp-1だからなのか。もしかして。 い…
composeの定義を見たら、afn発見。だけれどもrfnとの住み分けが不明。 rfn要らないんじゃないか? たまたまふたつあるだけかなぁ。 uniqをletで使っているのだけれど、この頃にはw/uniqがなかったのかなぁ。
アプローチが似ている気がする。 情報の伝達にグローバル的なものを使うという点でかしら。大した類似性でもないか。あ、でもLarryが「特殊変数を使うべきだ。代名詞を使うように。」みたいなことをラクダ本に書いてたから、やっぱり起源は同じだな。aandの…
ソース見てみないとだけれど、defineとset!を兼ねてる感じなのか。 レキシカルスコープで存在しない変数を=で設定したら、グローバル変数になってしまう。既存の変数だと思って設定しようとしたらタイポでグローバル変数作ってしまう感じ? 多少ラディカルだ…
多値の有用性について本質的に理解できているわけではないのだけれど、arcで多値は使えないのかな。 letとかwithでつじつまあわせているようにもみえる。 まあ、いいのかなぁ。 arc> (let (x y z) (list 1 2 3) (prn x "," y "," z )) 1,2,3 1
良く使うパターンをマクロ化する典型だったんだ。 if等で評価したものを後に使いまわすことは仕事でも良くアルパターンで、同じようなコードをいつも書くのだけれど、エレガントではない気がしていたが、答えはこれだったんだ。 perlで実現出来ないものか。p…
inは引数の評価を先送りすることで計算量を効率的にしている。 つまり遅延評価なんだなぁ。マクロ手法をいろいろ見てると必死で評価を先送りして、抽象的にかつ計算量を少なくしようとしているように見える。遅延評価といえば、haskell。 haskellの力の源泉…
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)
blogのソースを盗みまくったらwiki的なページは結構簡単にかける。 wiki記法とかのパースは全然できてないけど。 画面遷移は継続で楽にかけるけど、どんな抽象化をしてるのか実装見ないと不安。キーワードに関する情報をいろいろ集めて表示するページを前か…
いけないと思いつつ、コンテンツの享受(つまり本を読む)。 on lispより。setfの引数は汎変数なんだ。しらなかった。なんとなく使ってた。 arcの=の引数も汎変数じゃないか。あーよくわからない。define-modify-macroを使えば楽に汎変数として動作するマク…