M. Widera.
**A Sketch of Complete Type Inference for Functional
Programming**.
In Michael Hanus, editor, Functional and (Constraint) Logic
Programming (WFLP 2001), Bericht Nr. 2017,
Christian-Albrechts-Universität Kiel, 2001.

Complete type inference for functional
programming is an approach to incorporate static type inference into
dynamically typed languages that is based on the following idea: For
every program or program expression that can be evaluated without a
runtime type error, types denoting all valid input values (in case
of functions) and all corresponding output/result values are
inferred. A type error is just raised for program expressions that
must provably fail for every input.

this work we summarize the presentation of a complete type
checker. We motivate that complete type checking consists of a check
for every function call whether the input type expected by the
function and the type inferred for the argument have common
elements. After sketching an algorithm that tests two types for
common elements the type inference process is summarized in terms of
an abstract interpretation.