anchor.diff:  (defpackage :org.altervista.rjack.desim
     (:nicknames :ds)
     (:use :common-lisp)
  -  (:export :!transform :clone :run :next :prev
  +  (:export :schedule :next :prev
   	   :identifiable :id-of
   	   :simulated :description-of
  -	   :event :time-of :!action-of
  -	   :world :hystory-of :events-of))
  +	   :event :time-of :action-of
  +	   :world :clock-of :events-of))
   
   
   (in-package :ds)
   
   
  -(defgeneric !transform (dest source)
  -  (:documentation "Fill dest with some, all or none of the values from
  -  source."))
  +(defgeneric next (world)
  +  (:documentation "Execute the action associated with the next event
  +  returning a new world, possibly different from the given one."))
   
   
  -(defgeneric clone (object)
  -  (:documentation "Return a shallow copy of object."))
  -
  -
  -(defgeneric run (world event)
  -  (:documentation "Execute the action associated with event returning
  -  a new world, possibly different from the given one."))
  -
  -
  -(defgeneric next (world)
  -  (:documentation "Return the next world, based on the given one."))
  -
  -
  -(defgeneric prev (world)
  -  (:documentation "Return the previous world, relative to the given
  -  one."))
  +(defgeneric schedule (word event)
  +  (:documentation "Add event into world's events."))
   
   
   (defclass identifiable ()
  
positive.code:     :type fixnum
      :documentation "When this event must be executed.")
  
     (!action
      :initarg :!action
      :initform (error "missing :action")
      :reader !action-of
      :type function   ; FIXME: must fully specify signature.
      :documentation "Implements the behaviour of this event, taking the
      world as its only argument and modifying it.
  
negative.code: 
  
  (defclass world (identifiable)
    ((clock
      :initform 0
      :initarg :clock
      :accessor clock-of
      :type fixnum
      :documentation "World's internal clock.")
  
     (events
      :initarg :events
  