Capabilities can be tracked with continuation marks. For a language to
grant a subset of capabilities to a required module, you can do something
like contract-in that will wrap identifiers with a with-continuation-marks
capability restriction. The tricky part becomes how to make all I/O
subsystems
You can "pass" information from one macro to another by binding information
to an identifier defined to be a syntax parameter that both macros have in
scope. You would need to functionally update its value for each rebinding. Its
value would be retrievable with syntax-local-value.
For example,
syntax-local-value is likely what you'll want to use here. You can bind
your x to a compile-time value that you can access with syntax-local-value.
You can even make that value a struct with #:procedure prop:procedure and
have its procedure be a syntax transformer (so it can expand into something
+leif
Olin sent it to me a few years ago, but I couldn't get it working in
Racket. I didn't try hard though. I don't have it anymore since NEU swiftly
revokes access to email after you graduate. Perhaps Leif can bug Olin for a
copy of that tarball? Keep in mind that Olin is notoriously hard to
4 matches
Mail list logo