On 6/15/21, Britt Anderson <[email protected]> wrote:
>
> I was starting to explore plot and I am getting a behavior I do not
> understand. plot doesn't seem to be able to figure out the bounds for
> something that seems pretty straight-forward. When I give bounds as an
> optional argument I don't see the line I expect to see. Can anyone provide
> me some pointers? I feel like I am just missing something conceptually and
> would appreciate some guidance. Here is some minimal code to demonstrate
> the problem.  I get a plot square, but no line, and I can demonstrate that
> the function generates reasonable numbers for this range of inputs.
>
>
>
>     #lang racket
>     (require plot)
>     (require math/distributions)
>
>     (define (norm-prior mu)
>       (lambda (sd)
>       (lambda (ind)
>         (* ind (flnormal-pdf mu sd ind #f)))))
>
>     (define d ((norm-prior 0.5) 0.1))
>
>     (plot (function d 0 1 #:y-min 0.0 #:y-max 2.0 #:samples 100))
>
>     (map d (range 0.0 1.0 0.01))
>

This is tricky.

Plot is calling your function `d` with inputs like 0, 1/99, and 1. All
of those give contract errors --- try (d 0) for yourself.

But when a plot function throws an error, the library ignores the
problem & keeps trying to draw a picture.

To fix, I'd change `norm-prior` to make a flonum:

     (define (norm-prior mu)
       (lambda (sd)
       (lambda (ind)
         (* ind (flnormal-pdf mu sd (exact->inexact ind) #f)))))

[[ Maybe plot should check if a function renderer produces no output
and throw an error then. ]]

-- 
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/CAFUu9R649zKbfduwRk57gdCnYbAZ29amvSX1%3D%3D__Zx7hbbop9Q%40mail.gmail.com.

Reply via email to