Greenhorn
Greenhorn

Reputation: 411

How to ignore side-effect in Racket from using `set!`?

In Exercise 35.4.2 from HtDP, I've implemented the GUI and have a button called "Remove" which invokes a callback function. Here it is:

(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)))

When I run this, I get the following message: button-callback: result of type <Boolean> expected, your function produced #<set!-result>. The problem is that I have to call set! in order to change the address book. However, the result of set! is (void), which cannot cannot be combined with a Boolean type. How can I avert this problem? Thanks for any insight.

Upvotes: 1

Views: 288

Answers (1)

leppie
leppie

Reputation: 117220

Simple:

(begin (set! foo bar) #t)

Upvotes: 2

Related Questions