<div>Consider the innocuous appearing snippit below from collects/racket/place/distributed/examples/hello-world.rkt </div><div> </div><div>#lang typed/racket</div><div><br></div><div>(require racket/place/distributed</div>
<div> racket/place)</div><div><br></div><div>(provide hello-world)</div><div><br></div><div>(: hello-world (-> Place))</div><div>(define (hello-world) </div><div> (place ch</div><div> (printf "hello-world received: ~a\n" </div>
<div> (place-channel-get (assert ch place-channel?)))</div><div> (define HW "Hello World")</div><div> (place-channel-put (assert ch place-channel?) (format "~a\n" HW))</div>
<div> (printf "hello-world sent: ~a\n" HW))) </div><div><br></div><div><br></div><div>First issue is:</div><div>`place' is syntax entailing 2 closed over procs `place/proc' and `start-place defined in racket/place. No prob. I know the secret incantation.</div>
<div><br></div><div>So I add a couple of strawman typings base-special-env.rkt and these immediate undefined identifier errors magically go away.</div><div><br></div><div><div> ;; from the expansion of `place'</div><div>
[(make-template-identifier 'place/proc 'racket/place)</div><div> (-> -Variable-Reference -Symbol -Symbol (-> -Symbol -Resolved-Module-Path -Symbol (-opt -Input-Port) (-opt -Output-Port) (-opt -Output-Port) -Place)</div>
<div> (-opt -Input-Port) (-opt -Output-Port) (-opt -Output-Port) </div><div> -Place)] </div><div> [(make-template-identifier 'start-place 'racket/place)</div><div> (-> -Symbol -Resolved-Module-Path -Symbol (-opt -Input-Port) (-opt -Output-Port) (-opt -Output-Port)</div>
<div> -Place)]</div></div><div><br></div><div>The next one in the conga line is an unknown identifier error for `place?', which _is_ publicly exported by racket/place. But `place?' is itself syntax, so I donno, we have some sort of require-syntax-for-syntax sort of thing going on.</div>
<div><br></div><div>Just for laughs I tossed the below into base-special-env.rkt. and now hello-world.rkt has errors on duplicate definition of `place?'.</div><div><div> [(make-template-identifier 'place? 'racket/place)</div>
<div> (-> Univ -Boolean)]</div></div><div><br></div><div>Any ideas on how move forward? The idea was to take a run at TRing the collects/racket/place/distributed/examples/hello-world.rkt </div><div><br></div><div>Thanks in advance,</div>
<div><br></div><div>Ray</div><div><br></div>