Untyped racket has (require (prefix-in xml: xml))
. Typed racket has (require/typed xml [ #| lots of decls here |# ])
. How do I "mix" them?
Hi @charmonium and welcome to Racket!
It would be helpful if you could provide a minimal example code showing what you are trying to achieve, and highlighting the errors that prevent you from achieving your goal.
If you are trying to use xml
with a prefix from typed code, the following should work:
#lang typed/racket
(require (prefix-in xml: typed/xml))
You have already written the line for require
ing xml
wth a prefix in untyped code.
Is typed/xml
found in the manual. I couldn't find it?
I can't find it in the docs either, but it is defined here:
I found it because I've recently worked with typed/pict
, so I typed "typed/pict" in the search box, which lead me me to this page. I clicked on typed-racket-more
at the end of the first line, which lead me to the of the typed-racket-more package, giving an explicit list of typed interfaces to different untyped libraries provided by this package.
I had been about to suggest that 3 Libraries Provided With Typed Racket needed an update. It can be done at typed-racket/typed-racket-doc/typed-racket/scribblings/reference/libraries.scrbl at master · racket/typed-racket · GitHub
Setting aside the choice of typed/xml
vs. xml
, I realized I also did not know the answer to the original question.
I found that this works:
#lang typed/racket
(module untyped racket/base
(define five 5)
(provide five))
(require/typed
(prefix-in u: 'untyped)
[u:five Byte])
(add1 u:five) ;-> 6
However, it's not completely clear to me if it is supposed to work: I've opened `require/typed` duplicates effects from expanding `m`; docs unclear · Issue #1378 · racket/typed-racket · GitHub to follow up.
One thing I forgot to mention that Philip's suggestion reminded me of:
If you are going to use xml
quite a bit in Typed Racket (and there wasn't typed/xml
), I recommend the following:
- Create a "typed-xml.rkt" module that does
(require/typed xml …)
and re-provide
s the functionality of thexml
module. - Then, (typed) clients choose how to
require
it in the usual way, including(require (prefix-in xml: "typed-xml.rkt"))
.