[plt-scheme] Internal definitions error. - Beginner.
If you want to use DrScheme to study SiCP, start with the Module
language for now:
#lang scheme
(define (f n)
(define (f-w-counter n c)
(cond
((< n 3) n)
(else (* c (f-w-counter (- n 1) (- c 1))))))
(f-w-counter n 1))
If you really want to use the HtDP teaching languages to study SiCP,
you will need to change the syntax a bit to get going:
;; Intermediate:
(define (f n)
(local ((define (f-w-counter n c)
(cond
((< n 3) n)
(else (* c (f-w-counter (- n 1) (- c 1)))))))
(f-w-counter n 1)))
-- Matthias
On Mar 28, 2009, at 1:19 AM, Dave wrote:
> Hi,
>
> I seem to be getting this error:
>
> define: expected only one expression for the function body, but found
> at least one extra part
>
> When trying to use internal definitions such as:
>
> (define (f n)
> (define (f-w-counter n c)
> (cond
> ((< n 3) n)
> (else (* c (f-w-counter (- n 1) (- c 1))))))
> (f-w-counter n 1))
>
> or
>
> (define (sqrt2 x)
> (define (good-enough? guess x)
> (< (abs (- (square guess) x)) 0.001))
> (define (improve guess x)
> (average guess (/ x guess)))
> (define (sqrt-iter guess x)
> (if (good-enough? guess x)
> guess
> (sqrt-iter (improve guess x) x)))
> (sqrt-iter 1.0 x))
>
> the latter is not mine, but from Structure and Interpretation of
> Computer Programs - 1.1 The Elements of Programming. I'm not too sure
> where I'm going wrong here, I understand it's something pretty basic,
> but haven't managed to find an answer in the documents or PLT Scheme /
> HTDP newsgroups. I've tried turning the language setting all the way
> up to 11- advanced student, but no dice. I understand the error,
> there's 2 expressions within the definition, but I can't see why
> that's a problem.
> Any help would be greatly appreciated. I understand I don't need to
> use an internal definition for what I'm doing, but it would be good to
> know where my confusion lies.
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme