Implementation of functional languages with state

Imperative and functional programming are two styles which have long been viewed as incompatible. In particular, the functional property of referential transparency could not be maintained in the face of destructive update, as found in assignment statements. Recent work, however, has suggested that the two may be integrated in a formal system which has both imperative features and referential transparency. These systems impose certain constraints on imperative features that allow the effects to be masked out, making them appear purely functional. Despite the presence of these formal systems, many questions of practicality remain unanswered. In this thesis, we attempt to address these issues. In particular, we have created a language ALV, based on the formal system $\lambda\sb{var},$ and implemented ALV as a compiler. We have also extended a formal analysis known as abstract interpretation, typically applied to functional languages, to this language. Additionally, we have explored ways to make the use of imperative features more convenient, such as by relaxing the restrictions on the use of imperative constructs.