www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

pure-unsafe.rkt (799B)


      1 #lang racket
      2 
      3 (require racket/promise
      4          racket/private/promise
      5          (for-syntax racket/base))
      6   
      7 (provide (rename-out [promise/pure/stateful? promise/pure/maybe-stateful?])
      8          promise/pure/stateless?
      9          make-promise/pure/stateful
     10          make-promise/pure/stateless
     11          (struct-out declared-stateful-pure-function)
     12          (struct-out declared-stateless-pure-function))
     13 
     14 (define-struct (promise/pure/stateful promise) ()
     15   #:property prop:force (λ(p) ((pref p))))
     16 
     17 (define-struct (promise/pure/stateless promise/pure/stateful) ()
     18   #:property prop:force (λ(p) ((pref p))))
     19 
     20 (define-struct declared-stateful-pure-function (f)
     21   #:property prop:procedure (struct-field-index f))
     22 
     23 (define-struct
     24   (declared-stateless-pure-function declared-stateful-pure-function)
     25   ())