closette

with-slots

with-slots の完全な仕様を把握してないのでこれでいいのかわからんけど叩き台。 (require "symbol-macrolet") (defmacro with-slots ((&rest slot-entries) object &body body) `(let ((#1=#:object ,object)) (symbol-macrolet ,(mapcar (lambda (slot-ent…

#4 make-instance

ちゃんと profile とかしてないんだが、どうも generic-function の呼び出しがネックな気がする。 (make-instance 'foo :key <value>) が ;;; 0 (defmethod make-instance ((class symbol) &rest initargs) (apply #'make-instance (find-class class) initargs)) ;</value>…

#3 たらい回してみた

半端に compile するだけでもだいぶマシだけど、それでも200倍か・・・。 -- (tak 12 6 0) (tak 12 6 1) 遅さ defun 0.203 0.063 --- defmethod 508.641 128.438 2505, 2038 defmethod(compile 後) 46.25 12.204 227, 193 ;;; 生の xyzzy-lisp (defun tak (x …

#2 structure の print-function (1)

xyzzy だと ~A のときだけ print-function 使って出力する。~S のときは #S notation になる。今までそーゆーもんだと思ってたけど、sbcl は print-function 指定しておけばどっちでも print-function 使って出力してくれる。closette でけっこー入り組んだ …

#1 (defun (setf ) ...)

CLOS に興味がわいた、というか欲しくなった closette というのは CLOS の subset らしい 見てみたら2000行ちょいくらいだった ふるい common-lisp らしいので読めそうな雰囲気だった 「誰か移植しないかな」とかどっかで見かけた とゆーわけでやってみる。…