[plt-scheme] ->d Performance
->d is definitely substantially slower than the other because the
wrappers are more complex. Are you finding the performance overhead of
the ordinary -> acceptable?
Robby
On Sat, Apr 11, 2009 at 1:17 PM, Doug Williams
<m.douglas.williams at gmail.com> wrote:
> I would like to use ->d to impose a precondition for a function. For
> example:
>
> (matrix-ref
> (->d ((matrix matrix?)
> (i (and/c exact-nonnegative-integer? (</c (matrix-rows matrix))))
> (j (and/c exact-nonnegative-integer? (</c (matrix-cols matrix)))))
> ()
> (result any/c)))
>
> or
>
> (matrix-ref
> (->d ((matrix matrix?)
> (i exact-nonnegative-integer?)
> (j exact-nonnegative-integer?))
> ()
> #:pre-cond (and (< i (matrix-rows matrix))
> (< j (matrix-cols matrix)))
> (result any/c)))
>
> instead of just
>
> (matrix-ref
> (-> matrix? exact-nonnegative-integer? exact-nonnegative-integer? any/c))
>
> The first two do work, but are really, really slow.
>
> I like having the bounds check in the contract (as opposed to bounds check
> in the matrix-ref code, but can't accept the performance hit. Any ideas?
>
> Doug
>
>
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
>