guile-user
[Top][All Lists]
Advanced

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

Re: ERROR: Bad define placement


From: Thien-Thi Nguyen
Subject: Re: ERROR: Bad define placement
Date: Mon, 22 Nov 2010 22:24:59 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

() 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]