This is a known issue: plot-pict does not return a typed/pict type · Issue #15 · racket/plot (github.com) <https://github.com/racket/plot/issues/15>
Alex. On Tuesday, November 24, 2020 at 7:24:17 PM UTC+8 tim wrote: > Hi everyone, > > In typed racket, vc-append expects arguments of type pict, while plot-pict > produces results of type Pict. Therefore, to have vc-append accept a > plot-pict argument, I’m currently casting the result of plot-pict to be > of type pict. > > From my understanding of the underlying racket code, Pict just invokes a > pict? predicate through an #opaque definition, and cast inserts a runtime > test of its argument. Therefore, my cast seems wasteful. Have I missed > something? Is there a better way to structure a solution that type-checks? > > Here’s some code that type-checks for me: > > #lang typed/racket > > (require plot > pict) > > (vc-append (cast (plot-pict (function sin 0 1)) > pict)) > > > and the output is a graph, as expected. > > Here’s some that fails a type-check: > > #lang typed/racket > > (require plot > pict) > > (vc-append (plot-pict (function sin 0 1))) > > > Error output: > > ; plot-pict-test.rkt:6:11: Type Checker: type mismatch > ; expected: pict > ; given: Pict > ; in: (plot-pict (function sin 0 1)) > ; Context (plain; to see better errortrace context, re-run with C-u > prefix): > ; > /Applications/Racket/share/pkgs/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:376:0 > > type-check > ; > /Applications/Racket/share/pkgs/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:619:0 > > tc-module > ; > /Applications/Racket/share/pkgs/typed-racket-lib/typed-racket/tc-setup.rkt:96:12 > ; > /Applications/Racket/share/pkgs/typed-racket-lib/typed-racket/typed-racket.rkt:23:4 > > I get the same results whether I require pict or typed/pict. > > I hope this question is of general interest. I have some familiarity with > regular racket, but I’m only just starting out on typed racket. > > Best, > > > > Tim > > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/91d1094d-fe0a-46a9-9fc7-21355dea7163n%40googlegroups.com.

