PasteRack.org | ||
Paste # 56483 | ||
2015-03-27 14:03:59 | ||
Fork as a new paste. | ||
Paste viewed 100 times. | ||
Tweet | ||
Embed: | ||
#lang typed/racket/base (require racket/match (for-syntax typed/racket/base)) (struct RawStx ((val : Any) (ctx : Any)) #:transparent) (struct Wrap ((stx : Stx) (ctx : Any)) #:transparent) (define-match-expander Stx (lambda (stx) (syntax-case stx () ((_ pat) #'(app Stx-unwrap pat)))) (lambda (stx) (syntax-case stx () ((_ more ...) #'(RawStx more ...)) (_ #'RawStx)))) (define-type Stx (U Wrap RawStx) #:omit-define-syntaxes) (define (Stx-unwrap (stx : Stx)) : RawStx (error "fix me")) (Stx 'hello 'world) Stx