;;; -*- lexical-binding: t -*- (require 'eieio) (require 'eieio-base) (defclass person () ((name :type string :initarg :name))) (defclass classy (eieio-persistent) ((teacher :type person :initarg :teacher) (students :initarg :students :initform (make-hash-table :test 'equal)))) (let* ((jane (make-instance 'person :name "Jane")) (bob (make-instance 'person :name "Bob")) (class (make-instance 'classy :teacher jane :file (concat "classy-" emacs-version ".eieio")))) (puthash "Bob" bob (slot-value class 'students)) (eieio-persistent-save class (concat "classy-" emacs-version ".eieio")) (eieio-persistent-read (concat "classy-" emacs-version ".eieio") 'classy t))