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. ]]