I realize the purpose of define-type is to create structs, but I have struct with some constarints that must be satisfied, like in define-type.scm
I want two vars, 'x' and 'twice-x', where twice-x = (* 2 x)
In my code, I have created good-x-set! and good-twice-x-set!
However, how do I overwrite the existing linked-x-set! and linked-twice-x-set! with my good-x-set! and good-twice-x-set! ?
Thanks!
Afficher les réponses par date
On 21-May-09, at 3:22 PM, lowly coder wrote:
I realize the purpose of define-type is to create structs, but I have struct with some constarints that must be satisfied, like in define-type.scm
I want two vars, 'x' and 'twice-x', where twice-x = (* 2 x)
In my code, I have created good-x-set! and good-twice-x-set!
However, how do I overwrite the existing linked-x-set! and linked- twice-x-set! with my good-x-set! and good-twice-x-set! ?
Give private names for the actual setters, and define linked-x-set! and linked-twice-x-set! so that they call the private setter procedures.
Marc
(define-type linked (x linked-x $linked-x-set!) (twice-x linked-twice-x $linked-twice-x-set!))
(define (linked-x-set! v x) ($linked-x-set! v x) ($linked-twice-x-set! v (* x 2)))
(define (linked-twice-x-set! v x) ($linked-x-set! v (/ x 2)) ($linked-twice-x-set! v x))
(define obj (make-linked 0 0))
(linked-x-set! obj 11)
(pp obj)
(linked-twice-x-set! obj 100)
(pp obj)