Common LispでSingletonなクラスをCLOSで書くとどうなるのか? 考えてみた結果以下のような感じになった。 (defpackage foo (:use cl cl-user) (:export foo get-instance)) (in-package :foo) ;; fooクラスを定義する。 (defclass foo () ()) ;; +instance+にインスタンスを格納。(この時点ではコンストラクタは呼び出し可能) (defvar +instance+ (make-instance 'foo)) ;; 新しいインスタンスを作れなくするためにコンストラクタを呼び出せないようにする (defmethod initialize-instance :around ((this foo) &key) (error "can't create instance."))