# [plt-scheme] ->d Performance

Yes, the -> is fine. And, so is doing the same bounds check in my own
procedure. I was surprised that the ->d was so much slower. I use contracts
regularly and was trying to expand my usage of them.
On Sat, Apr 11, 2009 at 12:46 PM, Robby Findler <robby at eecs.northwestern.edu
>* wrote:
*
>* ->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
*>* >
*>* >
*>*
*-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20090411/fa5d9ae5/attachment.html>