, . , , , . .
, - , define-syntax-parameter, . syntax-parameterize, , , . .
, , make-variable-like-transformer syntax/transformer, , , , . , , , (current-thread) . syntax-parameterize :
(require (for-syntax syntax/transformer))
(syntax-parameterize ([self (make-variable-like-transformer
(behaviour))
" " self .
, , , , , , . , syntax-parameterize (behavior) self behavior.
, , . , : Racket , : , . , . , let, , , .
, , syntax-parameterize spawn , behavior spawn. syntax-parameterize create-thread-behavior, , , :
(define (behavior-impl)
(define message (thread-receive))
(printf "message: ~a~n" message)
(thread-send self "And this is crazy.")
(behavior-impl))
(define behaviour
(create-thread-behavior
(behavior-impl)))
self syntax-parameterize, .
, , , , , . , , self create-thread-behavior. self , : (current-thread). self:
(define-syntax self (make-variable-like-transformer #'(current-thread)))
self , current-thread. , , self - ( , ), .