Complete type combinators and self/outer typing