I used two procedures instead of lambda, which is acceptable but not preferred. The thing is it can only count upto 1, because addone's value is reset to 0. I cannot (not allowed to) change (count-matches s l). How can I keep the value of addone function?
(define (addone x) (+ x 1)) (define (count-matches s l) (cond [(empty? l) 0] [(equal? s (first l)) (addone 0)] [else (count-matches s (rest l))])) On Mon, May 30, 2011 at 5:41 PM, Yingjian Ma <yingjian.ma1...@gmail.com>wrote: > I noted that (+ i 1) is not an assignment. However, I cannot use let or > set! in the code. > > > On Mon, May 30, 2011 at 4:59 PM, Yingjian Ma <yingjian.ma1...@gmail.com>wrote: > >> lambda is used to define a function i and i will increment by 1 when a >> macth is found. >> It seems it did not work. In fact I do not want to redefine i after the >> first recursion. But I do not know how to fix it. >> >> Thank you for the quick reply. >> >> On Mon, May 30, 2011 at 4:29 PM, Matthias Felleisen <matth...@ccs.neu.edu >> > wrote: >> >>> >>> On May 30, 2011, at 7:17 PM, Yingjian Ma wrote: >>> >>> > Hi All, >>> > >>> > I wrote a piece of code to count the occurrance of a letter in a list. >>> But it gave me an error saying "#<procedure:...uments..." >>> > >>> > The code is below: >>> > >>> > (define (count-matches s l) >>> > (cond >>> > [(empty? l) 0] >>> > [(equal? s (first l)) (lambda (i)(+ i 1))] >>> >>> What's this lambda doing here? >>> >>> >>> > [else (count-matches s (rest l))])) >>> > >>> > Where the s is a letter and l is a list. To use it as an example, I >>> typed >>> > >>> > (count-matches 'f '(f )) >>> > >>> > and got the error. The right result should be 1. >>> > >>> > Do I need to initialize i? If so, how can I do it? >>> > >>> > Note that the keywords that I can use are pretty much used in the code. >>> If the solution needs keywords outside this post, it may not be useful to >>> me. >>> > >>> > Thank you very much. >>> > _________________________________________________ >>> > For list-related administrative tasks: >>> > http://lists.racket-lang.org/listinfo/dev >>> >>> >> >
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev