If I change the code to:
(define (maxval lst)
(define (aux lst max)
(cond [(null? lst) max]
[(> (car lst) max) (aux (cdr lst) (car lst))]
[#t (aux (cdr lst) max)]))
(aux lst 0))
and comment out #lang racket at the top of the file and select Beginning
Student as the language then I get error:
define: expected only one expression for the function body, but found 1
extra part
Is this because there is a 2nd define in the function? Or do I need some
syntax to indicate to run aux at the end of the definition.
On 12 February 2017 at 21:34, Matthias Felleisen <[email protected]>
wrote:
>
> > On Feb 12, 2017, at 3:00 PM, Angus <[email protected]> wrote:
> >
> > I am a beginner Racket developer by the way.
> >
> > Here is my maxval function which is supposed to take a list and return
> the largest integer in the list.
> >
> > (define (maxval lst)
> > (define (aux lst max)
> > (cond [(null? lst) max]
> > [(car lst) > max (aux (cdr lst) (car lst))]
> > [#t (aux (cdr lst) max)]))
> > (aux lst 0))
> >
> >
> > Using the function always returns the last value in the list
> >
> >> (maxval (list 1 2 3 5 6 1))
> > 1
> >
> > The code looks correct to me, but I must be missing something. What
> have I done wrong?
>
>
> Your code is 100% correct, conceptually. Sadly, it’s suffering from a
> mistake that I saw many many times in the 90s and before. And that’s
> precisely why we get beginners started on Beginning Student Language in
> DrRacket instead of plain Racket. Try it out for your next few exercises or
> even this one, to see whether the error message would have helped.
>
> — Matthias
>
>
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.