the answer

From: Joshua Peck Macdonald <>
Date: Mon, 3 Jul 1995 01:29:57 -0700

the answer to my previous post.

say you do something like this, which I consider to be perfectly
legal scheme.

(define-macro (begin-if pred . body)
  `(if ,pred
       (begin ,_at_body)))

(define (set-car! cell new)
  (begin-if (not (eq? (car cell) new))
    ;; do something here. I'm writing code for a box and pointer
    ;; diagrammer that updates itself dynamically.
    (real:set-car! cell new)))

say you then do the same for set-cdr, now, what happens?

since stk uses the set-cxr! procedures for its primitives and libraries,
and, notably, macro expansion, this will fail. I really think STk
should protect itself from this type of thing. I would also like to
rebind set!, hopefully I will be able to get this to work, but in
any case, I'm redefining system procedures where all I want is to change
the use of these procedures for user code. This makes everything else
slow, and it doesn't need to be.

Received on Mon Jul 03 1995 - 10:31:28 CEST

This archive was generated by hypermail 2.3.0 : Mon Jul 21 2014 - 19:38:59 CEST