|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
;; This file:
;; http://anggtwu.net/LISP/2025-defstruct.lisp.html
;; http://anggtwu.net/LISP/2025-defstruct.lisp
;; (find-angg "LISP/2025-defstruct.lisp")
;; Author: Eduardo Ochs <eduardoochs@gmail.com>
;;
;; (defun e () (interactive) (find-angg "LISP/2025-defstruct.lisp"))
* (eepitch-sbcl)
* (eepitch-kill)
* (eepitch-sbcl)
* (eepitch-sly)
* (eepitch-kill)
* (eepitch-sly)
(defstruct myab a b)
(defvar ab1)
(setq ab1 (make-myab :a 20 :b 30))
ab1 ;; -> #S(MYAB :A 20 :B 30)
(defmethod print-object ((p myab) stream)
(with-slots (a b) p
(format stream "~a_~a" a b)))
ab1 ;; -> 20_30
(defvar m)
(setq m (find-method
#'print-object '()
(mapcar #'find-class '(myab t))))
(remove-method #'print-object m)
ab1 ;; -> #S(MYAB :A 20 :B 30)
* (eepitch-sbcl)
* (eepitch-kill)
* (eepitch-sbcl)
(defstruct myab a b)
(defstruct (myabc (:include myab)) c)
(defvar ab1)
(defvar abc1)
(setq ab1 (make-myab :a 20 :b 30))
(setq abc1 (make-myabc :a 200 :b 300 :c 400))
ab1
;; -> #S(MYAB :A 20 :B 30)
(defmethod print-object ((p myab) stream)
(with-slots (a b) p
(format stream "~a_~a" a b)))
ab1
;; -> 20_30
;; What is the syntax here?
(remove-method print-object myab)
(remove-method 'print-object 'myab)
(remove-method #'print-object 'myab)
(remove-method #'print-object myab)
(find-method
abc1
(cl-defmethod cl-print-object ((ab myab) stream)
(princ (format "%s__%s" (myab-a ab) (myab-b ab)) stream))
(cl-defmethod cl-print-object ((abc myabc) stream)
(princ (format "%s_%s_%s" (myabc-a abc) (myabc-b abc) (myabc-c abc)) stream))
(cl-defmethod cl-print-object ((ab myab) stream)
(cl-call-next-method))
(cl-defmethod cl-print-object ((abc myabc) stream)
(cl-call-next-method))
;; (find-2a nil '(find-clprin2 ab1))
;; (find-2a nil '(find-clprin2 abc1))
;; (find-angg "LISP/tostring1.lisp")
;; Local Variables:
;; coding: utf-8-unix
;; End: