The aim of this study is to provide evidence of the relevance of functional programming for software engineering, both from a research and from a practical point of view. The software development process is studied and a brief introduction to functional programming and languages is provided. Functional programming tends to promote locality which makes it possible to reason about a component of a program, independent of the rest of the program. The significance of the functional approach for formal program manipulation is illustrated by two important techniques, abstract interpretation and program transformation. Abstract interpretation is applied to the compilation of memory management and program transformation is illustrated with many applications such as program correctness proofs, program analysis and compilation. A correct compiler is described entirely in terms of program transformations. Regarding program construction, it is shown that input/output and state-oriented problems can be described in a purely functional framework.
Assisted by: P. Fradet, A. Sinclair