🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.clos
Article #37

where is the bug in the use of slot-value-using-class

#37
From: Andre Mayers
Date: Fri, 24 Jul 1992 17:03
109 lines
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!mayers

Show 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