> You can use struct-info and struct-type-info to get at that information,
> though it's a bit indirect -- you have to add together the numbers of
> initialized and automatic fields, and compare that to the length of the list
> of immutable field indices.

Thanks!

So IIUC that would be the following, which works for the few test
cases I've thrown at it so far:

(define (immutable-struct? v)
  (define-values (st _) (struct-info v))
  (define-values (name init-field-cnt auto-field-cnt
                  accessor-proc mutator-proc
                  immutable-k-list
                  super-type skipped?) (struct-type-info st))
  ;; A structure is immutable if all its fields are immutable
  (= (+ init-field-cnt auto-field-cnt)
     (length immutable-k-list)))
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to