[racket] string problem question

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Mon Mar 19 16:32:10 EDT 2012

ps. Your program's light function does NOT map Strings to Images. It maps World to images, ASSUMING you have defined 

 ;; World is ... 

(probably string here but 1, 2, and 3 would work and so would many others). 


On Mar 19, 2012, at 4:25 PM, Matthias Felleisen wrote:

> 
> 1. Your program does NOT change a string. It changes the state of the traffic light (or it tells drracket to keep track of a different state). The string "rood" remains the same in eternity. 
> 
> 2. You're missing test cases, and if you had tested the program you would have discovered it before evaluating (main "rood"). 
> 
> 3. You can understand your program in terms of interactions after it signals an error: 
> 
>> (tock "rood")  ;; what is the state after one clock tick 
> "groen"
>> (tock (tock "rood"))  ;; what is the state after two clock ticks 
> "oranje"
>> (light (tock (tock "rood"))) ;; how will DrRacket render the state after two clock ticks 
> . ;; <-- some yellow circle 
>> ;; <-- now try three clock ticks. 
> 
> 
> 
> On Mar 19, 2012, at 3:10 PM, Roelof Wobben wrote:
> 
>> Hello,
>> 
>> I have to make a traffic-light which changes color after each tick of the computer.
>> So I thought this would work :
>> 
>> 
>> ;; String -> Image
>> ;; given a state of a trafic-light display a circle of the given color if it's a color of the traffic-light otherwise error
>> (define (light color)
>> (cond
>>   [(string=? color "oranje") (circle 10 "solid"  "yellow")]
>>   [(string=? color "rood") (circle 10 "solid" "red" )]
>>   [(string=? color "groen") (circle 10 "solid" "green" )]
>>   [else (error  "Error : geen kleur van een verkeerslicht ingevoerd in de functie" " light")]
>>   ))
>> 
>> ;; World -> World
>> ;; Given a World and set the traffic-light to the next color
>> (define (tock color)
>> ( cond
>>    [ (string=? color "oranje") "red"]
>>    [ (string=? color "rood") "groen"]
>>    [ (string=? color "groen") "oranje"]
>>    ))
>> 
>> (define (main color)
>> ( big-bang color (on-tick tock) (to-draw light)))
>> 
>> (main "rood")
>> 
>> But the contents of color does not change so I get a error message.
>> What is the racket way to change the value of a string.
>> 
>> Roelof
>> 
>> ____________________
>> Racket Users list:
>> http://lists.racket-lang.org/users
> 
> 
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users



Posted on the users mailing list.