The following returns #f and #t.  How can I get it to return #t and #t?

Context: I want to allow students to run Racket code on my server. But when 
I sandbox their code, I am getting back something that doesn't behave like 
a 2htdp/image object.  I'm not exactly sure what it is. 

#lang racket

(require racket/sandbox 2htdp/image)

(sandbox-path-permissions
  (list
    '(exists
       "/usr/lib/ssl/cert.pem")
    '(exists
       "/usr/lib/ssl/certs")))

(define user-code '(circle 40 'solid 'red))

(define circle1
  ((make-evaluator 'racket
                   `(define f
                      (let ()
                        ,user-code))
                   #:requires
                   '(2htdp/image))
   'f))

(define circle2
  (circle 40 'solid 'red))

(image? circle1) ;#f but I want it to be #t
(image? circle2) ;#t


If it helps, when I print out the above values with ~a, I get:

"#(struct:object:image% ... #(struct:translate 40 40 #(struct:ellipse 80 80 
0 255 red)) #(struct:bb 80 80 80) #f #f #f #f #t)"

"#(struct:object:image% ...)"

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/ebf8bf84-23d6-45f3-9b1d-6bb6bf592b8e%40googlegroups.com.

Reply via email to