[racket] racket/place seems to be incompatible with DrRacket

From: David Mitchell (dave at fallingcanbedeadly.com)
Date: Mon Aug 29 21:17:29 EDT 2011

I've been trying to experiment with racket/place, but it seems to have
significant incompatibilities with DrRacket. I've defined a module based on
a code snippet in
http://www.cs.utah.edu/plt/publications/dls11-tsffd.pdfthat looks like

#lang racket

(provide all-defined-out)

(define (fib n)
  (define (fib-inner n-remaining i i+1)
    (if (= n-remaining 1)
        (fib-inner (- n-remaining 1) i+1 (+ i i+1))))
  (if (<= n 0)
      (fib-inner n 0 1)))

(define (start-fib n)
  (define p
    (place ch
           (define n (place-channel-get ch))
           (place-channel-put ch (fib n))))
  (place-channel-put p n)

(define (super-simple)
  (define p
    (place ch
           (place-channel-put ch 5)))
  (place-channel-get p))

If I run racket in my Terminal and load this module, I'm able to use
start-fib and super-simple as expected. However, if I define this module in
the DrRacket editor and access the functions through the repl, attempts to
receive data from either place appear to hang. I'm running OS X Lion, and
I've tried both the 64-bit and 32-bit versions of 5.1.3, as well as the
64-bit version of the latest nightly build (
I posted a question about this to the IRC channel last night, and one other
user (jonrafkind) indicated that that the issue could be reproduced on
32-bit Linux, so it seems unlikely to be a platform issue. This user also
indicated, "it seems places keeps reloading the current module."
(Unfortunately, I am quite new to racket, so I have only a vague idea what
this means, and no idea at all as to how one would go about discovering such
a thing)

Does anyone have any insight as to why this might be failing and/or how I
might work around it (without abandoning the GUI)?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20110829/74652597/attachment.html>

Posted on the users mailing list.