This thesis makes three distinct contributions to software engineering, usingtyped functional programming.First, we present a schema to reduce polymorphic properties to an equivalentmonomorphic property, for the purpose of testing. Our proof uses parametricity andproperties of initial algebras.Second, we compare haskell type classes with their counterpart in C++. Wecontribute to an improved understanding of language support for genericprogramming, and hope to facilitate discussion between maintsream and functionalprogramming language communities.Third, we present a parsing library for incremental analysis of source code.This is an example of a non-trivial application of the principles of typedfunctional programming and lazy evaluation