Emergent typing

Emergent typing is a name that was coined by Tav for a typing discipline in programming languages invented by me and him independently, a kind of blend of strong and duck typing.

It’s kind of a formalization of the type system of Scheme (and as such can be implemented rather simply in that programming language). The idea is that you have types that are strongly defined by their behaviours rather than by definitions. So you can define an integer as something which responds true to the integer? function, and a natural number as something which is both an integer and a value greater than zero.

Then you can also create disjoint types in any of the normal ways a programming language might provide, and on top of those disjoint types you can implement more types based on the emergent properties of instances of those types.

Emergent typing is actually just a name for gradual dependent typing?