What happens if you provide the data structure from Typed Racket and
require it in an untyped module?

On 5/17/19, bruno cuconato <bccl...@gmail.com> wrote:
> hi,
>
> I'm trying to use a data structure defined in a typed racket module in my
> untyped code.
>
> I'm want it to be accessible from a generic interface, so I'm using
> `define-generics`'s #:fast-defaults for
> dispatching to the proper methods (this might not be the best practice
> though, and if so I welcome corrections).
> to do this I need a predicate for the type of data structure, hence my
> replying to this thread.
>
> would Matthias' suggestion be the best long-term solution here?
>
>> It suggests we should provide these generated contracts (or grant access
> them) via a modicum of reflection.
>
> I couldn't get Sam's solution to work, most likely because I haven't read
> much about typed racket yet. I tried
> both
>
> `(define-predicate RBTree? (All (A) (RedBlackTree A))) `
>
> and
>
> `(define-predicate RBTree? (RedBlackTree Any)) `
>
> but none of them seem to work. even if I could get it to work,
> I still like Matthias' suggestion because I wouldn't need to create
> another module.
>
> cheers,
>
> -- bruno cuconato
>
> On Tuesday, August 8, 2017 at 8:17:11 PM UTC-3, Sam Tobin-Hochstadt wrote:
>>
>> One other suggestion: you can use `define-predicate` in a Typed Racket
>> module to create a predicate for any type that can be checked
>> immediately. So
>>
>> ```
>> (define-predicate dist? (Discrete-Dist Your-Type-Here))
>> ```
>>
>> should define the predicate you want.
>>
>> Sam
>>
>> On Fri, Jul 28, 2017 at 10:23 AM, James Geddes <jge...@turing.ac.uk
>> <javascript:>> wrote:
>> > This is likely a typed-untyped interface newbie question.
>> >
>> > Briefly, how can I write a contract that asserts that some value has a
>> type that is defined in an imported typed/racket library?
>> >
>> > In more detail, I am using the math/distributions library, which is
>> written in typed/racket. My module is written in untyped Racket, and I'm
>> figuring out how to use contacts:
>> >
>> > #lang racket
>> > (require math/distributions) ;; this is a typed/racket library
>> >
>> > (define my-dist (discrete-dist '(thing-one thing-two)))
>> >
>> > (provide (contract-out [my-dist ???]))
>> >
>> >
>> > The question is: what should ??? be?. There is a distribution? predicate
>> >
>> but I'd quite like to be more specific: namely, that my-dist is a discrete
>>
>> distribution. In the source of math/distributions, the following type is
>> defined:
>> >
>> >         (define-type (Discrete-Dist A) (discrete-dist-struct A A))
>> >
>> > but I don't know how this might translate into my untyped module.
>> >
>> >
>> > Any help much appreciated!
>> >
>> > James
>> >
>> >
>> >
>> >
>> > -------------------------------
>> > James Geddes
>> >
>> > --
>> > 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...@googlegroups.com <javascript:>.
>> > For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> 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/2f278821-a585-42c4-b7a4-1ade07a228f8%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CAFUu9R4ok4av-xu6pDx3Pbt5Gi209580nsbLaOPCML-opiTmQw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to