guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ERROR: Bad define placement


From: barry stevensson
Subject: Re: ERROR: Bad define placement
Date: Tue, 23 Nov 2010 17:33:10 +0100

Thank you very much Neil and Thien-Thi, it works :-)

Barry

On Mon, Nov 22, 2010 at 10:24 PM, Thien-Thi Nguyen <address@hidden> wrote:
() Neil Jerram <address@hidden>
() Mon, 22 Nov 2010 20:26:49 +0000

  Fingers crossed...

The pertinent area of difficulty seems to be:

--8<---------------cut here---------------start------------->8---
(let f1 ((kzluw 0.5))
 (define (kxmin zvalue1) (- 0.75 (* zvalue1 0.5)))

 (let f2 ((kxluw (kxmin kzluw)))
   (define (kyluw xx zz) (- 1.5 (+ xx zz)))
   (define (kxmax zvalue2) (- 1 zvalue2))

   ...
--8<---------------cut here---------------end--------------->8---

In all these cases, the new variables introduced by ‘f1’
and ‘f2’ (i.e., ‘kzluw’ and ‘kxluw’, respectively) are
not used by the inner procedures ‘kxmin’, ‘kyluw’, ‘kxmax’.
To my eyes, it would be best to lift those procedures to
top level, like so:

--8<---------------cut here---------------start------------->8---
(define (kxmin zvalue1)
 (- 0.75 (* zvalue1 0.5)))

(define (kyluw xx zz)
 (- 1.5 (+ xx zz)))

(define (kxmax zvalue2)
 (- 1 zvalue2))

(let f1 ((kzluw 0.5))
 (let f2 ((kxluw (kxmin kzluw)))
   ...
--8<---------------cut here---------------end--------------->8---

That's a matter of style, though, not of correctness.
I'm sure there's a Seasoned Schemer commandment somewhere
regarding this.  Some other (very minor) style nits:

    ok:  (- 1.5 (+ xx zz))
 better:  (- 1.5 xx zz)

    ok:  (if COND THEN)
 better:  (and COND THEN)  /  (or (not COND) THEN)

Not to mention whitespace before close-paren....



reply via email to

[Prev in Thread] Current Thread [Next in Thread]