Latent type systems

A lot of people echo the fact that learning Lisp teaches you a lot of concepts in computer science. I was confused with choosing a particular implementation of Lisp (tried a bunch) and felt lazy to skim through the tutorial or documentation of each of those implementations of Lisp. Finally, I just decided to read the R5RS paper (A paper about Scheme). And I'm excited to say that I learnt something new while just reading the Overview section of the paper.

Scheme has latent as opposed to manifest types
And that caught my eye. A bit of searching led me here, which explains Latent type systems in a really simple way.

From my understanding of that awesome piece of explanation, labeling Lisp as a dynamically-typed language is very mis-leading.

"Latent" describes types from a syntactic perspective while the terms "Dynamic" or "Static" describes types from a run-time perspective.

And I'm sure that's confusing. Consider the following variable in Java:

String name;
(Yes! Java is static). And not latent. But the following is latent.

(define x 1)
You don't say it's of a particular type. The interpreter or compiler understands it and plays it's own game (static or dynamic). Now this might be dynamic or static in run-time, but just look at the syntax. It's LATENT :)

P.S: I guess a language like ruby is an example for having latent type system. But do correct me if I'm wrong. Really waiting for someone into Lisp to say if that's right.
Posted