[Openmcl-devel] Shortcircuiting of argument evaluation in #'<

Stas Boukarev stassats at gmail.com
Wed Jan 9 07:49:40 PST 2013

Ron Garret <ron at flownet.com> writes:

> IMO this is a bug in the spec, not CCL.  (< a b c ...) ought to mean
> (and (< a b) (< b c) ...) , not (let* ((a_ a) (b_ b) ...) (< a_ b_ c_
> ...)).  Putting side-effecting code inside a comparison operator is a
> Truly Horrible Idea (which is even worse than the previously
> trademarked Really Bad Idea) and any programmer who wants to write
> code that relies on it ought to bear the burden of expanding his code
> into the corresponding LET* rather than impose the burden of running
> dead code on the entire extant code base.  That is too high a price to
> pay.  The spec is not scripture.
Are you being serious? < is an ordinary function, and the order of argument
evaluation and guarantee of evaluation is exactly prescribed by the
standard. What's the big idea of randomly disregarding the standard?

With best regards, Stas.

More information about the Openmcl-devel mailing list