7. A system comprising: at least one processor: a memory connected to the at least one processor: and a module that when loaded into the at least one processor causes the at least one processor to: perform contextual typing by: receiving program source code comprising an enclosing expression, the enclosing expression enclosing at least one enclosed expression; and assigning a data type of the enclosing expression to the at least one enclosed expression in a top down direction; and display the data type of the enclosed expression.
9. The system of claim 7 , further comprising: a module that when loaded into the at least one processor causes the at least one processor to: augment type inference proceeding from a leaf node of a parse tree representing the program source code in a bottom up direction of the parse tree, with contextual typing, contextual typing comprising type inference that proceeds in a top down direction of the parse tree.