1. A method for defining declarative code in an intermediate machine readable representation, including: specifying a plurality of programming constructs of a declarative programming language including specifying each type associated with the plurality of programming constructs as a function of at least zero constraints on type; and based on the plurality of programming constructs, generating in memory of a computing device at least one abstract syntax tree structure in a machine readable intermediate language representation of the declarative programming language.