PasteRack.org
Paste # 2568
2017-12-12 16:29:04

Fork as a new paste.

Paste viewed 121 times.


Embed:

  1. #lang racket
  2.  
  3. (require (for-syntax syntax/transformer)
  4.          syntax/parse/define)
  5.  
  6. (struct ldo (id types props env [inherits-promise #:mutable])
  7.   #:name ldo-transformer-binding
  8.   #:constructor-name make-ldo)
  9.  
  10. (define (ldo-constructor-procedure id types props [env (*default-env*)])
  11.   (let ([this-ldo (make-ldo id types props env #f)])
  12.     (set-ldo-inherits-promise!
  13.      this-ldo (delay (ldo-calculate-inheits ldo)))
  14.     this-ldo))
  15.  
  16. (define-match-expander ldo
  17.   (syntax-parser
  18.     [(_ id types props env)
  19.      #'(ldo-transformer-binding id types props env _)])
  20.   (make-variable-like-transformer #'ldo-constructor-procedure))

=>