Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
;; This file:
;;   http://anggtwu.net/LISP/tostring1.lisp.html
;;   http://anggtwu.net/LISP/tostring1.lisp
;;          (find-angg "LISP/tostring1.lisp")
;; Author: Eduardo Ochs <eduardoochs@gmail.com>
;;
;; (defun e () (interactive) (find-angg "LISP/tostring1.lisp"))
;; (find-eev "eev-blinks.el" "find-estruct")
;; (find-es "lisp" "defclass")


(defclass mypair ()
  ((a :initarg :a :initform nil)
   (b :initarg :b :initform nil)))

(defun mkmypair (aa bb) (make-instance 'mypair :a aa :b bb))

(defmethod print-object ((p mypair) stream)
  (with-slots (a b) p (format stream "~a_~a" a b)))

(mkmypair 22 33)   ; -> 22_33

#|
* (eepitch-sbcl)
* (eepitch-kill)
* (eepitch-sbcl)
(load "tostring1.lisp")

(describe (mkmypair 22 33))
(mkmypair 22 33)

|#





























#|
* (eepitch-sbcl)
* (eepitch-kill)
* (eepitch-sbcl)
(load "tostring1.lisp")

(defvar ab)
(setq ab (mkmypair 22 33))
(setq ab (mkmypair 222 333))
(slot-value ab 'a)

(with-slots (a b) ab (list a b))
(with-slots (a b) ab (format nil "~a_~a" a b))

(defmethod print-object ((p mypair) stream)
  (with-slots (a b) p (format stream "~a_~a" a b)))

(mkmypair 4 5)

ab

  (princ (pr obj) stream))

(defun prmypair ((p mypair)))


(defclass mypair () ((a :initarg :a) (b :initarg :b)))
(make-instance 'mypair :a 22 :b 33)
(describe (make-instance 'mypair :a 22 :b 33))
(describe (make-instance 'mypair       :b 33))
(describe (make-instance 'mypair :a 22))
(describe (make-instance 'mypair))
(with-slots ((aa a) (bb b)) (make-instance 'mypair :a 22 :b 33) (list aa bb))
(with-slots ((aa a) (bb b)) (make-instance 'mypair       :b 33) (list aa bb)) ; err

(defmethod print-object ((obj person) stream)
      (print-unreadable-object (obj stream :type t)
        (with-accessors ((name name)
                         (lisper lisper))
            obj
          (format stream "~a, lisper: ~a" name lisper))))




#<STANDARD-CLASS COMMON-LISP-USER::TRIPLE>
CL-USER> (make-instance 'triple :a 1 :b 2 :c 3)
#<TRIPLE {101927F7D3}>

(defclass C () ())
(describe 'C)
(defclass C (a b) ())
(describe 'C)
(defclass C () (a b))
(describe 'C)
(make-instance 'C)
(describe (make-instance 'C))
(describe (make-instance 'C 2 3))
(describe (make-instance 'C :elements 2 3))
(describe 'make-instance)

* (eepitch-sbcl)
* (eepitch-kill)
* (eepitch-sbcl)
              (defclass mytriple () (a b c))
(macroexpand '(defclass mytriple () (a b c)))
             (describe 'mytriple)
(make-instance 'mytriple)
(make-instance 'mytriple :a 22)

(describe (make-instance 'C 2 3))




(let ((A (make-instance 'my-array :elements '(23 45))))
  (print A)) ;; This prints "23_45"

|#