This thesis makes three distinct contributions to software engineering, using typed functional programming. First, we present a schema to reduce polymorphic properties to equivalent monomor-phic properties, for the purpose of testing. Our proof uses parametricity and prop-erties of initial algebras. Second, we compare haskell type classes with their counterpart in C++. We con-tribute to an improved understanding of language support for generic programming, and hope to facilitate discussion between maintsream and functional programming 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 typed functional pro-gramming and lazy ev...