I have several of questions about the 'opaque'
option.
- Why are its effects limited to the reflective
procedures? Is it a restriction on them or
is something more general intended? Should
implementation-specific debuggers be allowed to
inspect opaque records? It seems very un-Scheme-like
to explicitly restrict programs and implementations
in this way. A program that runs in an implementation
that implements this restriction will get the same
result in one that ignores it.
- If this functionality is important, shouldn't
there be a general mechanism that would apply
to procedures, ports, and other data structures
as well?
- It seems unfortunate to have to specify opacity
when a record type is created. Suppose I want
to use a general queue package, say, that is
implemented using non-opaque records, but I want
to hide the internals. As it is, I must create
my own opaque type that wraps the general one.
-Richard Kelsey