空想犬猫記

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

Nerd

etolisp 進捗 (20) 〜 Package (3)

追記:このエントリは誤っている可能性が高いです。 前々回,前回の実装は,parse 時にシンボルの値を決定していたが,それはやってはならないことだった。というのも,Common-Lisp では動的に active なパッケージを切り替えることができるので,パースした…

etolisp 進捗 (19) 〜 Package の実装 (2)

パッケージについてもう少し考えてみる。Paul Graham の本は package についてほんの3ページしか割かれていないが,その冒頭には A package is a Lisp object that maps names to symbols. とある。そう,Common-Lisp においてパッケージはオブジェクトなの…

etolisp 進捗 (18) 〜 package の実装

テストフレームワークも少し進化して,こんな感じでテストを書き始めた(少し冗長なのは,本人のスキル不足と etolisp 自体に最低限の関数しか用意されていないから)。 (defmacro nice-caught (&body body) `(progn (nice-catch 'error ,@body) *last-nice-…

etolisp 進捗 (17) 〜 user interface, test framework

Macro も大体動くようになって(まだまだ細かいところで問題は山積みであるが)いよいよ次は構造体や CLOS の実装を試してみようという気になってきた。ただそのためにはシンボル操作周りの関数が不足しているので,いくつか実装する必要がある。一つ一つ実…

etolisp 進捗 (16) 〜 変態マクロ動く

おやすみなさいと,オフラインになってから寝るまでの,1時間のコーディングが至福の一時だったりする。昨日の方針通り back quote にネストされた back quote の中身は展開しないという方針で,変態マクロが動くようになった。back quote を使って「`,@hoge…

etolisp 進捗 (15)

天からの突っ込みが入った進捗(13)の修正を正式に復帰する。実際にはパース時にHashを作っていたのを,LambdaおよびMacroが評価されるタイミングで作成するように戻しただけなので,実質的にはコードの場所を移しただけ。よくよく考えれば進捗(13)はあまり意…

etolisp 進捗 (14) 〜 macro expansion

で,結局こうなった。context frame とか lexical context とか,正確な定義をしないまま変数名に使っているので,この辺は,間違っていたら,おいおい修正しようと思う。進捗(8) の方針をそのまま実装した。defun は lambda を setf したのとほぼ等価な実装…

Macro 再考

風も日差しも強く,波も悪そうなので,海に行かず Lisp のマクロについて,もう一度読み直してみる。どうやら7ヶ月前に妄想したこと(進捗(8) )がだめだったのかもしれない。Practical Common-Lisp を読み直して,もう一度マクロについてまじめに考えてみる…

etolisp 進捗 (13) 〜 パーサの改良

追記:このエントリは誤っている可能性が高いです。 今までパーサでは愚直に cons tree をくみ上げていたが,&optional や &key の文脈によっては,cons 以外の構造体,たとえば hash などで構文木を作った方が効率的であることに気付き始めた。いろいろでき…

パーサを元に戻したそうかどうか考えている件

パーサで構文木をいじるとマクロで困ると id:practicalscheme さんより指摘があった。マクロは ANSI Common LISP (Prentice Hall Series in Artificial Intelligence) だと,10章にあって,その辺りまでいくと [あとで考える] タグが付いていて,正直あまり…

パーサー改良中

パーサのデバッグを視覚的に行う。趣味でスクリプト言語の実装をやってるっていうと,自慢できそうだけど,こうやって構文木をダンプすると,如何に簡単なことをしているかってのが白日にもとに晒されてしまう(笑)こんな絵ばっかりかいていると,だんだん…

etolisp 進捗 (12) 〜 例外処理 〜

Array と Hash の実装も終わって,いよいよ CLOS が見えてきた。アロケータの最適化とかゴミ集めなど,むずそうなトピックは取りあえず棚上げにして,まず実用的な機能をばというわけで,catch と throw の実装をした。これができると,ようやくまともなLisp…

etolisp 進捗 (11) 〜 hash と vector の実装,シンボル名の高速化

今週末は LA には珍しく天気が悪く,サーフィンはお預け。頭の中で整理したいことがあったので,読書などで新しいものごとを学ぶ雰囲気でもない。かといって,ボーっとニコニコ動画を見るのもなんだったで,じつに半年ぶりくらいに etolisp をいじった。コー…

自動化

今まで,職場で使っていた自動化スクリプト(BAT,SH,Ruby,etc.)を,リハビリがてら全て Ruby に一本化した。主なものを挙げると, Nightly update & build*1 Build test module Run QA tests Build API document Send mail of daily CVS diff Send mail …

ぶれてない言語習得計画

今年の残りの時間は Ruby(30%), C# 3.0(60%),JavaScript(10%)とする。Lisp のオイシイところは Ruby に全て入っていることに気付いたのと,Ruby のキモチ良さやはり際立っているので Common-Lisp はしばらくおやすみにする。C# 3.0 も LINQ など…

Web アプリに興味

私は時代の流れに比較的左右されない,あるいは時代錯誤的なプロプラエタリな業界にいると思っていたが,それでもヒタヒタと「グリッドコンピューティング」とか「ウェブサービス」だとか,そういう流行の言葉が飛び交うようになってきた。一応,技術顧問的…

安価な歯のホワイトニング方法

DIY: Whiten your Teeth with Strawberries によると,イチゴと重曹を混ぜて,それを付けて柔らかいブラシで歯を擦れば良いらしい。しかし,そんな面倒なことをしなくても,一般に市販されている漂白剤(次亜塩素酸ナトリウム+界面活性剤)を上手に歯に塗れ…

ブログコンテスト?

Matz にっき のさいきんのエントリを読んで「ブログコンテスト」なるものがあることを知った。仕組みは 主催者が Blog 上でお題を出して, それに対して参加者が各自のブログにそのお題で記事を書く お題のページにリンクを貼る 主催者がエントリを評価 て感…

毛深いマクロ?

スターウォーズのヨーダを敬愛し,vi 使いであり,また いやなブログの愛読者であるとある女の人から「毛深いマクロ」て何?と質問された。彼女は以前,同シリーズの hoge を読んで「やった!飲み会のネタが出来た!」と喜んでいた。どうやら今回も factor o…

プログラマの階段

構文木をそのまま記述できる Lisp をいじってたら,プログラミング言語というのは,たんにシンタックス・シュガーを,あれこれ,もてあそんで,味付けしてるだけであって,どれも大差ないんだなーと思えるようになってきた。Ruby が Matz Lisp と呼ばれたり…

WTL

Windows でちょっとした GUI アプリを書こうという機運が高まっている。時代に逆行しているような気もするが,Windows の application framework 開発には,MFC 以外にも WTL というのがあるらしいことをしる。テンプレートバリバリでもえーな感じ。日本語で…

etolisp 今後の開発方針

ANSI Common LISP (Prentice Hall Series in Artificial Intelligence) を読みながらノリで書き始めた Lisp インタプリタ etolisp も,関数,マクロ,ローカル変数,ブロックやその他の制御が出来るようになり,原理的に興味があった部分については,大体実…

3D mouse

今年も,親に誕生日を忘れられたが,友人から geek な誕生日プレゼントをもらった。SpaceNavigator という 3D マウスだ。 3Dconnexion 3Dマウス SpaceNavigator PE (Personal Edition) SNPE出版社/メーカー: 3Dconnexion発売日: 2006/12/08メディア: Persona…

etolisp 進捗 (10) return の実装

今日は,return-from や return の実装をした。etolisp のもう一つの設計方針は,Lisp の関数が C の関数(あるいは C++ の関数オブジェクト)に一対一対応になるようにする,というもの。それはコードの見通しの良さと,将来,C/C++ で簡単に拡張可能できる…

etolisp 進捗 (9) &REST, &OPTIONAL, &KEY, ,@ の実装

defmacro は,id:xoinu:20070227 の方法で,とりあえず動いているようだ。Lamda を保持する ValueLambda クラスがあって,それを継承して ValueMacro クラスを作った。ついでに &REST,&OPTIONAL,&KEY,に加えて,back-quote でリストを splice する prefix…

メモ帳

テキストファイル 独自のバイナリフォーマット XML と,自分のアイデア・メモ帳ソフトのデータ形式は,時代(気分?)とともに変遷を遂げてきたが,今週末,それらを SQLite に移行した。SQLite というのは,PDS なファイルベースのデータベースエンジン。デ…

VS2005

いろいろあって,ようやく来週から Visual Studio .NET 2005 が社内標準になる見通し。ようやく 1998 年製の Visual Studio 6.0 から卒業。色々不満はあったが,今振り返ると,Visual Studio 6.0 は素晴らしいソフトだった。

OpenMoko

http://digg.com/linux_unix/Linux_based_iPhone_killer_available_online_in_March http://www.linuxdevices.com/news/NS2657814070.html iPhone よりこっち。

じわじわありがたみを感じる Emacs コマンド

ハッカー御用達*1の Emacs や Vi を使ってると,普通のエディタではできないヘンタイ的な編集が出来るようになる*2。最近,じわじわとありがたみを感じてきたコマンドを 3 つ紹介。 C-tカーソルの前後の文字を入れ替え,カーソルをひとつ右に進める。短い単…

No Third-party Apps on iPhone

No Third-party Apps on iPhone Says Jobs 萎える。やっぱり普通の PDA 買おうかな。