Microsoft has patent application 2011/0246973 which sounds suspiciously like Lisp. Here's claim 1:

1. A computer-readable medium having computer-executable instructions that when executed by a processor perform compiling a source program written in a native programming language, the source program having a plurality of internal semantic objects written in the native programming language, according to acts comprising:

  • determining whether an internal semantic object of the plurality of internal semantic objects within the source program written in the native programming language is associated with an indicator in the source program signifying that an external semantic data object is to be created to represent the internal semantic object, wherein the internal semantic object comprises instructions to be executed by at least one application that responds to instructions in a programming language different from the native programming language; and

  • selectively processing the internal semantic object based on the indicator by:

  • when the internal semantic object is associated with the indicator, processing, according to a syntax of the native programming language, the internal semantic object of the plurality of internal semantic objects and creating the external semantic data object representing the instructions included in the internal semantic object; and

  • when the internal semantic object is not associated with the indicator, converting the internal semantic object into object code.

Would the papers on Lisp count as prior art for this case?

3 Answers 3


As far as I understand, this patent appears to be about LINQ, where a query is either converted to SQL (for database objects) or compiled into object code (for internal data structures).

The Lisp papers don't talk about object code.

For prior art, try searching for another compiler that supports multiple destination languages, both compiled and interpreted.


After going through the whole patent, I can't find even a hint of anything novel. It just describes a bunch of things people have been doing for years, trying to make the whole thing as unintelligible as possible. Let me try to describe it.

First, this application involves code-as-data, which is why it sounds like LISP. But it need not be anything as sophisticated as that. They say an "external semantic data object" could be nothing more than a function pointer.

This also is about inter-application communication. They mention database access as an example, and also function delegates: exactly what people have been doing with SOAP, CORBA, etc. for years.

Another important part is having embedded support for a second language (e.g. SQL) inside the main compiler, allowing it to do syntax checking, variable binding, etc. This is the one place they actually claim to be doing something novel: "Thus, in contrast to the prior art in which source code instructions indended to control a separate application were "quoted" and passed to the application as a string or other literal form, an external semantic data structure representing the source code instructions is provided." Of course, that's a complete lie. Embedded support for other languages has been around for ages. A good example of this is CUDA, which lets a single file contain both C++ code to be compiled down to a native executable, as well as kernels to run on the GPU, while providing full syntax checking and variable binding across both of them.

Finally, they say that an "indicator" in the source code determines how a piece of code gets processed. In CUDA, that's the __global__ keyword, which tells the compiler whether to compile a function down to native code, or to produce an intermediate form (PTX in this case) that can later be executed on a different processor (the GPU).


The venerable MUMPS language (ISO standard M) has the XECUTE command which can execute stored code. Since all MUMPS commands work with both persistent and non-persistent data, the code can be stored in a database. MUMPS is not usually a compiled language however there is a version of MUMPS called GT.M which is. According to wikipedia: "In GT.M, M code can freely call out to C code (or code in other languages with a C compatible interface), and C code can freely call in to M code". If so, then that should cover most, if not all, the claims in this patent.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .