New examples

svn: r11460
This commit is contained in:
Jay McCarthy 2008-08-27 22:04:56 +00:00
parent 776dfd7352
commit 7ca029e13d
5 changed files with 79 additions and 3 deletions

View File

@ -24,5 +24,5 @@
(define (start initial-request)
`(html (head (title "Sum"))
(body ([bgcolor "white"])
(p "The sum is "
(p "The answer is "
,(number->string (+ (request-number "first") (request-number "second")))))))

View File

@ -28,5 +28,5 @@
(define (start initial-request)
`(html (head (title "Sum"))
(body ([bgcolor "white"])
(p "The sum is "
(p "The answer is "
,(number->string (+ (request-number "first") (request-number "second")))))))

View File

@ -24,5 +24,5 @@
(define (start initial-request)
`(html (head (title "Sum"))
(body ([bgcolor "white"])
(p "The sum is "
(p "The answer is "
,(number->string (+ (request-number "first") (request-number "second")))))))

View File

@ -0,0 +1,33 @@
#lang scheme
(require web-server/servlet)
(define interface-version 'v1)
(define timeout +inf.0)
(provide start interface-version timeout)
(define (start initial-request)
(define counter1 0)
(define counter2 0)
(send/suspend/dispatch
(lambda (embed/url)
(let*-values ([(inc1 next-counter1 next-counter2) (include-counter counter1 counter2 embed/url)]
[(inc2 next-counter2 next-counter1) (include-counter next-counter2 next-counter1 embed/url)])
`(html
(body (h2 "Web Cell Test")
(div (h3 "First") ,(inc1 next-counter1 next-counter2))
(div (h3 "Second") ,(inc2 next-counter2 next-counter1))))))))
(define (include-counter my-counter other-counter embed/url)
(let/cc k
(letrec ([include
(lambda (next-my-counter next-other-counter)
`(div (h3 ,(number->string next-my-counter))
(a ([href
,(embed/url
(lambda _
(k include
(add1 next-my-counter)
next-other-counter)))])
"Increment")))])
(values include
my-counter
other-counter))))

View File

@ -0,0 +1,43 @@
#lang scheme
(require web-server/servlet)
(define interface-version 'v1)
(define timeout +inf.0)
(provide start interface-version timeout)
(define (start initial-request)
; A top-level frame must exist
(define counter1 (make-counter))
(define counter2 (make-counter))
; counter1 and counter2 must have been added to the top-level frame
(define include1 (include-counter counter1))
(define include2 (include-counter counter2))
; counter1 and counter2 may have been modified
(send/suspend/dispatch
(lambda (embed/url)
; The frame (ref) must have been captured, any changes to web-cells after this will be lost
`(html
(body (h2 "Web Cell Test")
(div (h3 "First")
,(include1 embed/url))
(div (h3 "Second")
,(include2 embed/url)))))))
(define (make-counter)
(make-web-cell 0))
(define (include-counter a-counter)
(let/cc k
(define (generate)
(k
(lambda (embed/url)
`(div (h3 ,(number->string (web-cell-ref a-counter)))
(a ([href ,(embed/url
(lambda _
; A new frame has been created
(define last (web-cell-ref a-counter))
; It is a child of the parent frame, so we can inspect the value
(web-cell-shadow a-counter (add1 last))
; The new frame has been modified
(generate)))])
"+")))))
(generate)))