Scheme 如何使用“set!”忽略球拍的副作用?
在中,我实现了GUI,有一个名为“Remove”的按钮,它调用回调函数。这是: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
(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)
明亮的这就是我要找的。非常感谢。