> I'm still not convinced by the last option. Given the above, Option 2 > (that is, writing our own, preferably in Scheme) seems to be the safest. > Hopefully this isn't too much work, but the above quote indicates that > we should be careful about performance. ;-) > > Would you like to try doing it?
[Time passes.] Okay, I've tried -- at length. And so far I haven't been able to top the performance of the reference implementation. In fact, it actually seems to be fairly efficient (I now think Marc's quote above about Gambit's built-in support says less about the relative shortcomings of his particular implementation and more about the benefits of doing something like this in native code). From what I can see, there are only a few areas in which the reference implementation could be improved by Guile-specific features: * Native hash tables (Marc's code has its own hash table implementation) * Use of `hashq-get-handle' (the reference implementation relies on the identity of an `undefined' object) * Symbol generation for naming run-time helper functions (the reference implementation explicitly exports bindings for helper functions) So it looks like the right way to go might be to tweak Marc's implementation so that it takes advantage of the above, although I don't see it improving the performance all that much. Alternatively, we could do this in C, but I don't know if it's worth the added complexity. Thoughts? Regards, Julian