Here's one way to do that in scheme:

(require mockery.scm)

(define (meta-vector v data)
  (openlet
   (sublet (*mock-vector* 'mock-vector-class)
     'value v
     'mock-type 'mock-vector?
     'meta-data data)))

(define v (meta-vector #(0 1 2) "hiho"))

(display (v 1))
1

(display (v 'meta-data))
hiho

(display v)
#(0 1 2)

(vector? v)
#t

heh heh -- the last is a lie of course; it's actually
a let trying to masquerade as a vector.  mockery.scm
defines several such "mock data" types.

_______________________________________________
Cmdist mailing list
Cmdist@ccrma.stanford.edu
https://cm-mail.stanford.edu/mailman/listinfo/cmdist

Reply via email to