Article View: comp.lang.clos
Article #37where is the bug in the use of slot-value-using-class
From: Andre Mayers
Date: Fri, 24 Jul 1992 17:03
Date: Fri, 24 Jul 1992 17:03
109 lines
3345 bytes
3345 bytes
Does someone know what I am doing wrong in the following program:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -*- Mode: Lisp -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass
meta-obj-meta-class
(clos::standard-class)
((instances-list :accessor instances-list )))
(defparameter name-of-class
(defclass meta-obj-class ()
((forme :accessor forme :initarg :forme )
(contenu :accessor contenu :initarg :contenu))
(:metaclass meta-obj-meta-class )))
(defmethod
(setf clos:slot-value-using-class)
(valeur
(class meta-obj-meta-class)
(objet standard-object)
(slot-name (eql 'contenu)))
(declare (ignore valeur))
(print 'primary-method)
(call-next-method))
(defmethod
(setf clos:slot-value-using-class) :before
(valeur
(class meta-obj-meta-class)
(objet standard-object)
(slot-name (eql 'contenu)))
(declare (ignore valeur))
(print 'before))
(defmethod
(setf clos:slot-value-using-class) :after
(valeur
(class meta-obj-meta-class)
(objet standard-object)
(slot-name (eql 'contenu)))
(declare (ignore valeur))
(print 'after))
(defun biz (x)
(make-instance 'meta-obj-class :contenu x))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -*- END -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
The problem is that the evaluation of (biz "x") doesn't give the same
result depending if the code is interpreted or compiled as you can see below:
Allegro CL 4.1 [SPARC; R1] (7/2/92 11:39)
Copyright (C) 1985-1992, Franz Inc., Berkeley, CA, USA. All Rights Reserved.
; Loading home init file.
(compose) pour partir le composer
;; Optimization settings: safety 3, space 0, speed 0, debug 3
;; For a complete description of all compiler switches given the current
;; optimization settings evaluate (EXPLAIN-COMPILER-SETTINGS).
;; Starting socket daemon and emacs-lisp interface...
>>>>>>> the code is interpreted
USER(1): (biz "x")
BEFORE
PRIMARY-METHOD
AFTER
#<META-OBJ-CLASS @ #xd1f33e>
>>>>>>>> the code is compliled
USER(2): (biz "x")
#<META-OBJ-CLASS @ #xe43ee6>
>>>>>>>> but outside "biz", "make-instance" behave properly
USER(3): (make-instance 'meta-obj-class :contenu "x")
BEFORE
PRIMARY-METHOD
AFTER
#<META-OBJ-CLASS @ #xe4516e>
USER(4):
-------------------------------------------------------------------------
Does someone know how to use the following generic functions:
map-dependents, add-dependents and remove-dependents?
-------------------------------------------------------------------------
Andre Mayers
Departement d'informatique et de recherche operationnelle
Universite de Montreal
C. P. 6128, succursale "A"
Montreal, P. Quebec,
Canada
H3C 3J7
--
-----------------------------------------
Andre Mayers (mayers@iro.UMontreal.CA)
-----------------------------------------
Technical Details
Message-ID:
<MAYERS.92Jul24120318@philemon.IRO.UMontreal.CA>Path:
arc1-ca.pugleaf.net!sparky!uunet!utcsri!bonnie.concordia.ca!IRO.UMontreal.CA!iros1!mayersShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!utcsri!bonnie.concordia.ca!IRO.UMontreal.CA!iros1!mayers From: mayers@philemon.IRO.UMontreal.CA (Andre Mayers) Newsgroups: comp.lang.clos Subject: where is the bug in the use of slot-value-using-class Message-ID: <MAYERS.92Jul24120318@philemon.IRO.UMontreal.CA> Date: 24 Jul 92 17:03:18 GMT Sender: news@IRO.UMontreal.CA Organization: Universite de Montreal -- Laboratoire Incognito Lines: 109