Fri May 20 18:38:57 CEST 2011

Opaque code in Scheme?

I can never distinguish the intensional/extensional adjectives when
talking about the representation of code.  I prefer using

        opaque: code can be composed, but not decomposed (analyzed)
        transparent: composition + decomposition (code = concrete data)

In MetaOCaml, code is opaque.  Once constructed it cannot be modified
to not violate constraints imposed by the type system.

Note that in practical use, such code is often embedded in transparent
data structures that do allow inspection, i.e. to implement partial

I prefer to use Scheme (Racket) for my metaprogramming experiments to
make it easier to "break the rules" at the stage where I'm not sure
yet how to make a program structure fully consistent.  Is it useful to
also only use only opaque code, or should everything be wide open?