Prism Metaprogramming Tool released

Jim Little
Sun, 24 Oct 1999 22:23:12 -0600

Laurent Martelli wrote:

>   Jim> What sorts of operations on sets were you thinking of?  The
>   Jim> Prism tool VM already supports lists and bags and operations on
>   Jim> them.
> I was think about union, intersection, iteration, testing if an object
> is a member of a set, adding an element, removing an element, counting
> elements ... Very basic operations after all.

Yeah, the Prism VM already supports these operations natively, except
for union and intersection, which can be composed from the other ones. 
But you have raised some concerns about the VM's machine code in my mind
-- I'm writing a letter for the Prism mailing list about my concerns, if
you want to take a look at that.  The letter will be called "Changes to
Prism Control?"  (Archives are created daily at; subscription tool at

>   Jim> OIL seems very similar to Prism:
>   Jim> "The goal of this project is to build an open interpretor that
>   Jim> will support Aspect Oriented Programming (AOP). It will also be
>   Jim> reflexive in the sense that we will reimplement it in itself,
>   Jim> so that we can apply AOP's principles to the interpretor."
>   Jim> The above statement (from your web page) could equally well
>   Jim> apply to Prism, if I understand it correctly.  One thing I'm
>   Jim> not clear about: Prism allows new languages and compilers to be
>   Jim> added to the tool at runtime -- is that also true of OIL?
> It depends on what you call a language :-)
> OIL is not reflexive yet, so it's nothing more than a lisp machine for
> the moment. But once it is reflexive, we'll be able to build new UIs,
> new syntaxes. But the core semantics of the interpretor will be the
> same. Adding new semantics is achieved by adding new services. If you
> create a special UI for some special services, you'll somehow have a
> new language.

Hmm, it appears that OIL and Prism aren't as similar as I first
thought.  :)  I'm now rather confused as to what OIL is for... your
website says "an open interpreter that will support AOP," but I don't
see how "services" and "UI" relate to that.

What are your goals for OIL?  What will it do when it's fully
functional?  Assuming it were fully functional, how might I use it in a
typical day?