Name: Anonymous 2013-03-31 11:27
Hello /prog/, I'm not really much of a programmer but I've been dicking around with Lisp/Scheme lately for fun (DrRacket specifically). One of the programs in my book goes like this:
;; move-circle : number circle -> circle
;; to draw and clear a circle, translate it by delta pixels
(define-struct circle (center radius color))
(define (move-circle delta a-circle)
(cond
[(draw-and-clear-circle a-circle) (translate-circle a-circle delta)]
[else a-circle]))
draw-and-clear-circle draws and clears a circle, obviously, and translate-circle simply modifies the given "circle" structure such that its position is shifted by "delta" pixels. So if I wanted to make a circle move across the screen I could run something like
(draw-a-circle (move-circle 10 (move-circle 10 (move-circle 10 (make-circle (make-posn 30 30) 45 'red)))))
Anyway my question is simply this: why is there an "else" at all in that conditional? The function "draw-and-clear-circle" always returns a value of "true", or, if there's something wrong with the definition of the circle structure, an error. So afaik the "else" would never come into play.
;; move-circle : number circle -> circle
;; to draw and clear a circle, translate it by delta pixels
(define-struct circle (center radius color))
(define (move-circle delta a-circle)
(cond
[(draw-and-clear-circle a-circle) (translate-circle a-circle delta)]
[else a-circle]))
draw-and-clear-circle draws and clears a circle, obviously, and translate-circle simply modifies the given "circle" structure such that its position is shifted by "delta" pixels. So if I wanted to make a circle move across the screen I could run something like
(draw-a-circle (move-circle 10 (move-circle 10 (move-circle 10 (make-circle (make-posn 30 30) 45 'red)))))
Anyway my question is simply this: why is there an "else" at all in that conditional? The function "draw-and-clear-circle" always returns a value of "true", or, if there's something wrong with the definition of the circle structure, an error. So afaik the "else" would never come into play.