Scheme 如何使用“set!”忽略球拍的副作用?

Scheme 如何使用“set!”忽略球拍的副作用?,scheme,racket,htdp,Scheme,Racket,Htdp,在中,我实现了GUI,有一个名为“Remove”的按钮,它调用回调函数。这是: (define (cb-remove x) ((lambda (name result) (cond [(number? result) (remove-name name address-book)] [else (draw-message msg "Not found")])) (string->symbol (text-contents label-name

在中,我实现了GUI,有一个名为“Remove”的按钮,它调用回调函数。这是:

(define (cb-remove x)
  ((lambda (name result)
     (cond
       [(number? result) (remove-name name address-book)]
       [else (draw-message msg "Not found")]))
   (string->symbol (text-contents label-name))
   (lookup (string->symbol (text-contents label-name)) address-book)))
当我运行此命令时,我得到以下消息:
按钮回调:预期类型的结果,您的函数生成35;
。问题是我必须调用
set以更改通讯簿。但是,
set的结果
(void)
,不能与布尔类型组合。我怎样才能避免这个问题?感谢您的帮助。

简单:

(begin (set! foo bar) #t)

明亮的这就是我要找的。非常感谢。