diff --git a/collects/syntax/strip-context.ss b/collects/syntax/strip-context.ss new file mode 100644 index 0000000000..7e0be69eed --- /dev/null +++ b/collects/syntax/strip-context.ss @@ -0,0 +1,20 @@ +#lang scheme/base + +(define (strip-context e) + (cond + [(syntax? e) + (datum->syntax #f + (strip-context (syntax-e e)) + e + e)] + [(pair? e) (cons (strip-context (car e)) + (strip-context (cdr e)))] + [(vector? e) (list->vector + (map strip-context + (vector->list e)))] + [(box? e) (box (strip-context (unbox e)))] + [(prefab-struct-key e) + => (lambda (k) + (apply make-prefab-struct + (strip-context (cdr (vector->list (struct->vector e))))))] + [else e]))