A common interface to manage a session, such as FTP or HTTP.

A <session> instance keeps the status.

Session can be synchronous (blocking) or asynchronous (callback style) -- desirable if the interface allows both, so that application can select.

Can it be integrated to the human interaction?


The synchronous style can be implemented on top of asynchronous style using call/cc, but some applications may want to avoid calling call/cc.

Synchronous style pseudo code:

 (define session (make <ftp-session> :initarg blah blah))
 (session-open session)
 (ftp-user session user passwd)
 (ftp-get session :remote path :local path)
 (ftp-list session :remote path)
 (session-close session)

Apparently, it'll be nice if we could use plain name `open' and `close' for the generic function.

More ...