空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

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

etolisp 進捗 (29) 〜 Object Systemの実装 (3):defmethod

defmethod の実装が限定的に終わる。今のところ,メソッドの検索は class ID をキーに,ハッシュを利用した n 分木構造を辿る仕組みにしている。効率的ではないかも知れないが,一番,直感的に思える実装。Generic Function は,関数の配列と,関数を検索す…

etolisp 進捗(番外編)

メッセンジャーで別れ話をしながら defmethod の実装をしていたら,いつの間にかよりが戻っていた件。その分ソースコードはこんがらがった。method の specialization の仕組みは,かなりいい感じで実装できた。generic function のインフラは完成。あとはde…

House Cleaning

Generic Function の実装中に,色々,デザインのアイデアが浮かんで来たので少々寄り道中。もともと etolisp は赤い本を読んで,lambda の仕組みを知って感動したのが始まりで,実装し始めたものだ。そのため,Lambda には特別な思いが込められ,特別扱いを…

etolisp 進捗 (28) 〜 Object Systemの実装 (2):defclass

今日は defclass の実装。継承もスタティックメンバもサポートできた。この辺,赤い本は少ししか言及がないので,理解が正しいかどうか不安だ。取りあえず本に載っているコードは全て動くようになった。Precedence も,図を書いて説明すると複雑そうだが,実…

etolisp 進捗 (26) 〜 Packageの実装 (5)

半年以上 塩漬け になっていた package 絡みの問題を解決。なんかもう記憶が定かではないのだが,拙い blog の記述によれば,実行時にシンボル名を解決していたのが問題になっていたらしい。結局「,」や「,@」を,CL package*1のexportシンボルにして,「,ho…

etolisp 進捗 (27) 〜 Object Systemの実装 (1)

【ニコニコ動画】創世のアクエリオンを聞きながら作業。「あっいーしーてーるー」がリフレインしてあまり捗らない。ニコニコ動画に「作業用BGM」タグがあるのを発見。ニコニコだと時間制限がないので,平気で「神曲メドレー90分」とかがアップされている。MP…

etolisp 進捗 (25) 〜 ガーベージコレクタの実装 (4)

Code Project の記事をもとに実装し始めたガーベージコレクタも,そろそろ etolisp での使用に耐えるものに出来上がってきた。元のコードは分かり易さのためか(?)マーキングの処理で明らかに非効率な線形サーチを行っていた。そのため10万ノードのゴミ掃…

etolisp 進捗 (24) 〜 ガーベージコレクタの実装 (3)

id:xoinu:20080515 の続き。本日は gc_ptr の配列版の実装。動的配列やハッシュなど,cons 以外のデータ構造についてもちゃんとガーベージコレクタが働くようにするには,node_t::contains() によって参照関係をトレースできるような gc_ptr の配列を作る必…

ついにこの日が来た!

iPhoneをトイレのタイルの上に落下... orz

etolisp 進捗 (23) 〜 ガーベージコレクタの実装 (2)

このまえ(id:xoinu:20080503:1209891180)の続きをごにょごにょ。A garbage collection framework for C++ のコンセプトコードは確かに面白いが,致命的な問題が2つ。1つはそのままのコードだとデストラクタが正しく呼ばれない。node_t のデストラクト時に…

生き急ぐ二十代

CEOがオフィスにやってきたので,かねてから考えていた,とある報告と相談。結果は二つ返事で快諾。我ながら英断だった。即答してくれたことにも感謝。自分で自分の道を切り開いた瞬間って,脳内に青い液体がパァっと浸透するような,そんな快感爽快感がある…

etolisp 進捗 (22) 〜 ガーベージコレクタの実装

C++/CLI を少しいじって,メモリ管理から開放される気楽さを知ってしまった。興味がわいたので,A garbage collection framework for C++の実装を参考にお手軽 gc_ptr を実装した。正確にいうと,リンク先の gc_ptr の実装を理解しただけ,ということになる…