But what is manifest typing? I was under the strong impression that in a manifest type system, values have types, variables do not. In agreement with this definition are Paul Graham's ANSI Common Lisp (page 218), a sentence at lisp.org, and another sentence at a web site about scheme, but all these are brief mentions of manifest type systems, with no discussion.
On the flip-side, there are some articles (mostly of blog nature) online which claim that a manifest type system requires you to declare the type of every variable is a manifest type system. In particular, see the entry about manifest typing on Ward's Wiki. (If the first paragraph of that entry sounds correct, it's because I added it last night. The rest of the article gives a different definition.)
Hmmmm. It seems to me that the "sentence at a web site about scheme" supports the Ward's Wiki definition, not Graham's--it contrasts "latent typing" to "manifest typing" pointing out that Scheme has "latent" typing. And that sentence is really just referring to the terms used in R5RS which also contrast "latent" and "manifest" typing, with "latent" being what Schema has. Googling "manifest typing" finds many articles that contrast manifest and latent typing. (Manifest typing is also then contrasted to type inference in which typing is static (done at compile time) but inferred rather than "manifest" in the code.) The one link Google turns up that supports the Grahamian definition is an essay by Gene Michael Stover which contains an appendix about manifest typing that is so similar to the text above that I'm guessing maybe Gene wrote this page too. Anyway, Graham has his own view of things on a lot of things--perhaps this is one. If his definition is the root of the use of "manifest" to mean "latent" in the Common Lisp community, maybe it'd be worth stamping that usage out now in the interest of being able to communicate with the rest of the world--including our cousins in the Scheme world--who seem to have adopted the apposite view. --Peter Seibel