structy-defclass
2017-06-30
Provides deftclass, a struct-like way of defining classes
Upstream URL
Author
Chris Bagley <chris.bagley@gmail.com>
License
BSD 2 Clause
Structy-Defclass
I just want to make a class as easily as I can with structs
(deftclass name a b c)
expands to
(defclass name nil
((a :initarg :a :reader name-a :type t)
(b :initarg :b :reader name-b :type t)
(c :initarg :c :reader name-c :type t)))
(defun make-name (&key (a () #:a2071) (b () #:b2072) (c () #:c2073))
(make-instance 'name :a
(if #:a2071
a
nil)
:b
(if #:b2072
b
nil)
:c
(if #:c2073
c
nil)))
(defun name-p (x) (typep x 'name))
The following are also supported
(deftclass (thing (:include x)
(:conc some-)
(:constructor gimme-thing))
a
(b 0)
(c 0 :type fixnum))
This also means it's easier to refactor into structs once you have done with experimenting.