racket/collects/syntax/strip-context.ss
Ryan Culpepper 64250c4931 syntax: fixed 'strip-context' on prefab structs
fixes bug in prefab struct literal in scheme/load module

svn: r14038
2009-03-10 21:19:18 +00:00

24 lines
639 B
Scheme

#lang scheme/base
(provide strip-context)
(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
k
(strip-context (cdr (vector->list (struct->vector e))))))]
[else e]))