[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Firstclass continuations



    Date: Mon, 23 May 88 22:55:49 edt
    From: jinx at CHAMARTIN.AI.MIT.EDU (Guillermo J. Rozas)

    MIT Scheme has a procedure (rather than a special form) called
    DYNAMIC-WIND, which is a generalization of UNWIND-PROTECT.

    (dynamic-wind
     (lambda () <entry>)
     (lambda () <body>)
     (lambda () <exit>))

    is similar to

    (begin
      <entry>
      (let ((val <body>))
        <exit>
        val))

    except that <exit> is executed whenever <body> is "escaped", and
    <entry> is executed whenever <body> is (re)entered.

T has this too; it's called BIND-HANDLER, and behaves the same way.
(UNWIND-PROTECT body . exit) is sugar for (BIND-HANDLER FALSE (LAMBDA ()
body) (LAMBDA () . exit)).  The BIND macro is also sugar for a use of
BIND-HANDLER, thus the name.