[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:06625] defstruct の :print-function



こんばんわ、相沢です。

↓ defstruct で :print-function を使った時、望みの出力が得られません。

(defstruct (foo
	    (:print-function
	     (lambda (form stream depth)
	       (format stream "#<foo: ~S,~S,~S>"
		       (foo-a form)
		       (foo-b form)
		       (foo-c form)))))
  a b c)
#<structure-definition: foo>

(make-foo :a 1 :b 2 :c 3)
#S(foo a 1 b 2 c 3) ; #<foo: 1,2,3> にならない


↓ print関数は、登録されているが、呼び出されていない感じ・・・

(let ((def
       (defstruct (foo
		   (:print-function
		    (lambda (form stream depth)
		      (format stream "#<foo: ~S,~S,~S>"
			      (foo-a form)
			      (foo-b form)
			      (foo-c form)))))
	 a b c)))
  (funcall (si:*structure-definition-print-function def)
	   (make-foo :a 1 :b 2 :c 3)
	   t
	   0))
#<foo: 1,2,3>
nil

-- 
相沢実(Minoru Aizawa)
maizawa@xxxxxxxxxxxxxxxxxxxx

Index Home