Taken from the mail list thread http://www.eby-sarna.com/pipermail/peak/2004-March/001356.html:

Adapting takes an input object, and returns the object if it provides the desired protocol. If the input object does not provide the protocol, a lookup takes place to find an adapter function that will convert the object or create a wrapper to adapt it.

From a user example:

]]>

Food is a class. It does not provide IEdible, and you have not defined any adapters from it to IEdible.

However, you have declared that instances of Food provide IEdible. So this:

adapt(IEdible,Food())

will return you the Food instance you passed in.