Skip to content

Instantly share code, notes, and snippets.

@AiziChen
Last active August 25, 2021 11:18
Show Gist options
  • Save AiziChen/1c675d90cbe94be3ef6a6e868649f8fc to your computer and use it in GitHub Desktop.
Save AiziChen/1c675d90cbe94be3ef6a6e868649f8fc to your computer and use it in GitHub Desktop.
Racket dynamic reload
#lang racket/base
(provide beta)
(require "alpha.rkt")
(define beta alpha)
#lang racket/base
(require racket/rerequire)
(module+ test (require rackunit))
(require rackunit)
(define (get-beta)
(dynamic-rerequire "beta.rkt")
(dynamic-require "beta.rkt" 'beta))
(define (set-alpha! v)
(with-output-to-file "alpha.rkt" #:exists 'replace
(lambda ()
(printf "#lang racket/base\n(provide alpha)\n(define alpha ~v)\n" v))))
(module+ test
(set-alpha! 1)
(check-eqv? (get-beta) 1)
(set-alpha! 2)
(check-eqv? (get-beta) 2)
(set-alpha! 5)
(check-eqv? (get-beta) 5))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment