(module message-mixins mzscheme (require (lib "contract.ss") (lib "class.ss") (lib "mred.ss" "mred") "interfaces.ss") (provide/contract [updatable-message-mixin (mixin/c [message%] [] [updatee<%>])]) (define (updatable-message-mixin super%) (class* super% (updatee<%>) (init-field update-label) (public on-update) (super-new [label (update-label)]) (inherit set-label) (define (on-update) (set-label (update-label))))) )