On Tue, Aug 31, 2010 at 4:22 PM, Patrick Li <[email protected]> wrote: > But this starts to clutter up the library. Is it possible to provide this > optimization at the library level for the users? eg. somehow recognize that > whenever the user writes (matrix-transpose-multiply A B) I can replace it > with the internal function (matrix-transpose-multiply* A B)?
You can do this with macrology. Basically, matrix-multiply should become an identifier macro with some special cases to handle known optimisations. > and (let ([AT (matrix-transpose A)) (matrix-multiply AT B)) with > (matrix-transpose-multiply* A B) I don't know if this will work with my proposed scheme. I think macro expansions occurs before inlining. I'm curious to read what others suggest. You could define a whole language like Typed Racket, but that is probably too much work for what you want. N. PS: Looking forward to more numerical code in Racket. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

