FYI, C-level implementation appears to be in src\fun.c, line 7722 as *scheme_dynamic_wind


Jay,

->dynamic-wind issue
--------------------------

The short answer is the code I'm working on is an implementation of Harel's hierarchical state machine formalism.

I hesitate to provide a long answer as I fear it would be an imposition on your time and goodwill. Though I'm happy to provide, if you ask.

After some rewriting, the narrow issue in getting the stateless language to work for this application is a rewrite of the higher-order primitive dynamic-wind.

This is the known issue with needing to rewrite higher order functions. Not a surprise.

Below is the relevant code snippet, but,again, it could be any arbitrary higher order function

I've grepped the racket/src directory without success

and read 'The Scheme of Things: The June 1992 Meeting- Appendix A" by Rees and "Contstraining Control" by Friedman and Hayes

but both appear to require redefining call/cc which seems like it might be problematic unless done in a compatible way with racket and #lang web-server .

Can you provide any guidance on a re-implementation of dynamic-wind?

Thanks again for the assistance.


#|

Capturing a stateless continuation within context of dynamic wind raises exception
" Attempt to capture a continuation from within an unsafe context:"


|#


#lang web-server

(require web-server/servlet-env)

(define (main-entry request)
  (dynamic-wind
   void
   (λ () (send/suspend
    (lambda (k-url)
      (response/xexpr
       `(html (body (a ([href ,k-url]) "Hello world!")))))))
   void))


(define (start request)
  (printf "calling start\n")
     (main-entry request))


(serve/servlet start
                 #:stateless? #t
                 #:launch-browser? #t)

#|

END CODE

|#

____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to