PasteRack.org
Paste # 25050
2015-10-06 18:47:32

Fork as a new paste.

Paste viewed 239 times.


Embed:

Confuse (crash?) the Racket compiler

  1. #lang racket
  2. (module base-sig racket/base
  3.   (require racket/unit)
  4.   ;(require (only-in racket/function thunk)) ; Omitting this line crashes the compiler
  5.  
  6.   (define-signature reify^
  7.     (reify-thunk
  8.      (define-syntaxes (reify)
  9.        (syntax-rules ()
  10.          [(_ e)
  11.           (reify-thunk (thunk e))]))
  12.      ))
  13.  
  14.   (provide reify^))
  15.  
  16. (module base racket/base
  17.   (require racket/unit)
  18.   (require racket/control)
  19.   (require (submod ".." base-sig))
  20.  
  21.   (define-unit reify@
  22.     (import)
  23.     (export reify^)
  24.     (define (reify-thunk computation)
  25.       (reset (computation)))
  26.     )
  27.   (provide reify@))
  28.  
  29. (module client racket
  30.   (require (submod ".." base))
  31.   (define-values/invoke-unit/infer reify@)
  32.  
  33.   (reify 0))

=>