But that does hide the intent of the case-lambda usage, which is captured in the original.
On Mon, Oct 25, 2010 at 8:21 AM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu>wrote: > On Mon, Oct 25, 2010 at 10:06 AM, Doug Williams > <m.douglas.willi...@gmail.com> wrote: > > > > (case-> (->r ((r random-source?) > > (a real?) > > (b (>/c a))) > > real?) > > (->r ((a real?) > > (b (>/c a))) > > real?))) > > > > I'm not sure that one can be easily rewritten in the current contract > > system. [I think I would have to move the b > a constraint into the code > > itself in the current contract system. Or, change the argument order and > > break backward compatibility.] > > This can be written as a dependent contract, but with worse error messages. > > (->i ([r/a (or/c random-source? real?)] [a/b real?]) > ([b/opt (r/a a/b) (if (random-source? r/a) (>/c a/b) none/c)]) > [result real?]) > > -- > sam th > sa...@ccs.neu.edu >
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev