;;; Exercice 1 ;; 1- (require :asdf-install) (asdf-install:install "http://dept-info.labri.fr/~idurand/io.tgz") ;; 2- à constater par vous même ;;; Exercice 2 (set-syntax-from-char #\] #\)) (set-macro-character #\[ (lambda (stream char) (declare (ignore char)) (let* ((l (read-delimited-list #\] stream t)) (last (last l))) (append last (nbutlast l))))) ;;; Exercice 3 ;; 1- (defun make-node (num) (make-instance 'node :num num)) ;; 2- (defclass graph () ((nodes :initarg :nodes :initform '() :accessor graph-nodes))) ;; 3- et 4- à tester vous-même ;; 5- (defclass graph () ((nodes :initarg :nodes :initform '() :accessor graph-nodes) (arcs :initarg :arcs :accessor graph-arcs))) ;; 6- (define-save-info graph (:nodes graph-nodes) (:arcs graph-arcs)) ;; ou si on préfère reconstruire la liste des arcs à partir de ceux ;; qui sont dans les "nodes" (define-save-info graph (:nodes graph-nodes)) ;; 7- (defmethod graph-add-arc :after ((origin node) (extremity node) (g graph)) (setf (graph-arcs g) (adjoin (make-arc origin extremity) (graph-arcs g) :test #'equalp)))