Joe Gilray wrote:
Thanks for sharing your code.

It beats staring blankly at a poorly written PE solution! And when the
counter tells you you'll have a result in a week, it's probably time to
rethink!

Quick, newby question: why do you use "and" instead of "begin" in your
progress function?  I've seen others do this as well (of course, Eli's
"(and...)" idiom above is a whole different animal... and very cool.

The code was factored out from a #:when clause in my loops, which would
read:

(for/XXX
 ([i 1000]
  #:when (or (> (modulo i 5) 0) [the print bit])
  [j 1000]
  [k 1000]
  [l 1000])
  ...)

[the print bit] started life (naively) as:
(printf "~a|" i) (flush-output)

Unfortunately, the (> ...) clause would fail on i=0,5,... causing the
printf to call, which returns void, a true value, so the "or" would succeed
without getting to the flush-output.

So, as you say, [the print bit] needed bracketing off. A "begin" would have
done. But the issue I had was with boolean logic operators so I looked to
them for a solution... "and" does the trick.

Re Style: looking back on it, my issue was with functions returning void,
which I find hard to make an opinion of one way or another whether it
should be true, false, or "don't use this in a boolean". (Yes I know
only #f is false and all that...). "Begin" would keep me out of that
philosophical quandary, and therefore be the style I would prefer, if I
had a mind about me!

"when" might have been even more appropriate, since it takes a boolean
condition and then arbitrary forms -- but I didn't really want to see:
  #:when (when (> ...) print flush)
It's just odd.

Hope that hasn't exposed you too much to the darker corners of my thinking,
but you did ask!

Tim

--
Tim Brown <tim.br...@cityc.co.uk>  | City Computing Limited            |
T: +44 20 8770 2110                | City House, Sutton Park Road      |
F: +44 20 8770 2130                | Sutton, Surrey, SM1 2AE, GB       |
-----------------------------------------------------------------------|
BEAUTY:  What's in your eye when you have a bee in your hand           |
-----------------------------------------------------------------------'
City Computing Limited registered in London No. 1767817.
Registered Office: City House, Sutton Park Road, Sutton, Surrey, SM1 2AE
VAT number 372 8290 34.
____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to