![]() In a pattern like (let loop ([l l]) (define v (syntax-e l)) (cond [(null? v) 'done] [else (loop (datum->syntax #f (cdr v)))])) the running time was O(N^2) for a list of syntax objects of length N. That pattern is relevant for traversals that use `syntax-case` like (let loop ([l l]) (syntax-case l () [(a . b) (loop #'b)] [() 'done])) Avoid bad behavior by recording in an weak hash table certain pairs that were previously been produced by `datum->syntax` internally so that they can be used as-is. |
||
---|---|---|
.. | ||
collects | ||
src | ||
.gitignore |