PasteRack.org
Paste # 9655
2019-06-12 23:16:27

Fork as a new paste.

Paste viewed 326 times.


Embed:

  1. #lang racket
  2. (define-syntax val
  3.     (lambda (stx)
  4.       (syntax-case stx ()
  5.         [val (identifier? (syntax val)) (syntax (get-val))])))
  6.  
  7. (define-values (get-val put-val!)
  8.     (let ([private-val 0])
  9.       (values (lambda () private-val)
  10.               (lambda (v) (set! private-val v)))))
  11.  
  12. val
  13. (+ val 3)

=>

0

3