Hello,

I continue my work with Typed/Racket and Racket, and I now have another 
problem, with the same error.

I try to use in untyped racket a typed async-channel of type Any, and I'm not 
able to use the higher-order value from this channel.
Here is an example code that show this problem :

```
#lang racket

; A higher-order value
(define add (lambda (x) (+ x 1)))
(add 1)

; Untyped is working well
(require racket/async-channel)
(define untype-p (make-async-channel 10))
(async-channel-put untype-p add)
(define new-add (async-channel-get untype-p))
(display "untype world : ")
(displayln (new-add 2))

; Untype <-> type world doesn't work
(module port typed/racket
(provide build-port (struct-out port))

(require typed/racket/async-channel)

(struct port ([channel : (Async-Channelof Any)]))

(: build-port (-> port))
(define (build-port)
(port (make-async-channel 10))))

(require 'port)
(define p (build-port))

(async-channel-put (port-channel p) add)
(define n-add (async-channel-get (port-channel p)))

; Fail : Attempted to use a higher-order value passed as `Any` in untyped code: 
#<procedure:add>
(n-add 3)
```

Do you have an idea how I can use my procedure?
I don't know if it's possible, or if it is a limitation of the untyped <-> 
typed boundary?

Thank you in advance,

Denis Michiels


--
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to