VentureScript programs consist of a series of instructions which are executed by the Venture SIVM (Stochastic Inference Virtual Machine). These instructions
The top-level VentureScript program is much like a (randomized) program in any other high-level programming language, with one critical difference: It may
When we wish to distinguish it from the model program, we refer to the toplevel program as the inference program. The programming language available to the model program, the model language, amounts to a slightly restricted subset of the full VentureScript language, which we also call the inference language.
For those readers for whom this is helpful, you can think of the inference program as being run in the State ModelHistory monad (though, more like ST with a single implicit STRef ModelHistory, because the system’s state is actually mutated underneath). There are do, bind, and return, as one would expect, except that they are specialized to this one monad.
VentureScript is programmed in a JavaScript-inspired concrete syntax. In addition, VentureScript has a Lisp-like written representation for abstract syntax trees, and also accepts programs written in that (with the --abstract-syntax flag). As of the present writing, the system will report most errors in the abstract syntax, and you may find some definitions and examples in this manual written that way as well.