I meant to suggest that plot should raise any error that a function it calls raises. Is there something wrong with doing that?
Robby On Wed, May 21, 2014 at 11:09 AM, Neil Toronto <neil.toro...@gmail.com> wrote: > Referencing an identifier before its definition raises an > `exn:fail:contract:variable`. So that would put Plot in the weird position > of having to distinguish different kinds of contract errors, but not by > using subtypes or any other simple rule. > > Maybe we should have an `exn:fail:contract:math` or > `exn:fail:contract:domain` or `exn:fail:contract:argument` and make > `exn:fail:contract:divide-by-zero` a subtype of it. I'd gladly change Plot > to ignore just those, and change the math library to raise more specific > errors. > > (log 0) raises an `exn:fail:contract:divide-by-zero`, which is a terminology > stretch that suggests we need a bit of refactoring anyway. > > Neil ⊥ > > > On 05/21/2014 09:51 AM, Robby Findler wrote: >> >> IMO, plot should raise that exception. >> >> Robby >> >> On Wed, May 21, 2014 at 10:37 AM, Laurent <laurent.ors...@gmail.com> >> wrote: >>> >>> ... it eats everything! (particularly exceptions) >>> For example, it is perfectly happy with the following: >>> >>> % racket >>> Welcome to Racket v6.0.1.7. >>>> >>>> (require plot) >>>> (plot (function (lambda(x)(+ x n))) >>> >>> #:x-min 0 #:x-max 10 #:y-min 0 #:y-max 10) >>> (object:2d-plot-snip% ...) >>> >>> ... although n is clearly undefined. Presumably this is to avoid breaking >>> on >>> math errors like `(/ 0)` ? >>> >>> Would it make sense to have an `exn:fail:arithmetic` exception struct so >>> that `function` would only catch those? >>> >>> Laurent >>> >>> >>> ____________________ >>> Racket Users list: >>> http://lists.racket-lang.org/users >>> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users >> > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users