<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<br><div><div>On 2009-10-21, at 12:08 , Tim Bradshaw wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On 21 Oct 2009, at 09:52, Tobias C. Rittweiler wrote:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">As the consequences are undefined, implementations may conformingly</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">grab for means outside the standard.</div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I think this is a really important point (I was half-way through a <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">message saying the same thing, but not so well).</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">It is clear that the standard for CL is not meant to be complete, in <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the sense that a conforming implementation may have extensions to the <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">standard.<span class="Apple-converted-space"> </span>For instance, a conforming implementation may define a <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">foreign function interface, or may have an object system which is not <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">CLOS (so long as it also has CLOS), or a MOP for CLOS.<span class="Apple-converted-space"> </span>Or it may have <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">global lexicals, or all sorts of special top-level behaviours[*].</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">This is obvious, but there seems to be a trend for people to say <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">"because feature x is not in the standard, implementations may not <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">provide it".<span class="Apple-converted-space"> </span>This is really only true where the standard *prohibits* <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">feature x, which may be because it directly conflicts with features <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">provided by the standard, because the standard just says "you may not <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">do x", because the feature would break conforming programs, or <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">possibly for other reasons.</div></blockquote><div><br></div>you treat the notion of conformance too loosely for it to be useful. i don't buy the argument.</div><div><br></div><div>yes, if someone puts "global lexicals" on my plate, if i would otherwise starve, i will eat them.</div><div>but, i will not pay for them.</div><div>and, i will feel justified to walk into the kitchen and interfere with the chef de cuisine and ask whether, despite how liberating his notion of a "free variable" may be, whether it still leaves me in a position to write a conforming program. that is, one which (by definition) depends "only upon documented aspects of common lisp".</div><div><br></div><div>the documented behavior of setf/setq permits (the names of) lexical variables and dynamic variables. these two classes include none of</div><div>- "free variable" - a concept which, as seductive as it may be, suffers the contradiction, that the "free" variable is created by a binding.</div><div>- "global lexical variable" - which, in any event, is contradicted by the extant implementations.</div><div>- "non-special dynamic variable" - which, in any event, is an empty set.</div><div>- "indefinite variables" - which, despite being the closest denomination, does not appear in the spec</div><div><br></div><div>as it happens, if i do depend on this undocumented behavior, as circumstances have it, my non-conformant program is still portable.</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(in-package :cl-user)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(setq *load-print* t)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(unintern 'var)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defparameter *level* 0)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">#+sbcl (unlock-package :sb-debug)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">#+cmu (setq ext:*top-level-auto-declare* nil)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(setq var 10)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defun fun1 () var)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defun fun2 (var) var)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defun fun3 () (lambda () var))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defun fun4 (var) (lambda () var))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defun fun5 (var) (declare (special var)) (lambda () var))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defun fun6 (&optional (var var))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (declare (special var))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (decf var)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (if (plusp var) (1+ (fun6 )) 0))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(defun fun7 (&optional (var var))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (decf var)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> #| cmucl 19e runs off into oblivion above 3000000 |#</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (when (> (incf *level*) 1000000) (error "too many levels"))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (if (plusp var) (1+ (fun7 )) 0))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">(pprint (mapcar </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> #'(lambda (form)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (let ((op (compile nil `(lambda () ,form))))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (format t "~&~s => " form)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (prin1</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (handler-case (funcall op)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> #+allegro (excl::SYNCHRONOUS-OPERATING-SYSTEM-SIGNAL (c) c)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> #+ccl (ccl::stack-overflow-condition (c) c)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> #+cmu (error (c) c)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> #+sbcl (SB-KERNEL::CONTROL-STACK-EXHAUSTED (c) c)))))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> '((lisp-implementation-version)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (fun1)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (fun2 0)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (funcall (fun3))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (funcall (fun4 100))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (funcall (fun5 100))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (fun6 )</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (fun7 )</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (list var (let ((var -1)) (list (funcall (fun3)) var)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (list var (let ((var -1)) (declare (special var)) (list (funcall (fun3)) var)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (list var (let ((var -1)) (list (funcall (fun4 -2)) var)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (list var (let ((var -1)) (declare (special var)) (list (funcall (fun4 -2)) var)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (list var (let ((var -1)) (list (funcall (fun5 -3)) var)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> (list var (let ((var -1)) (declare (special var)) (list (funcall (fun5 -3)) var))))))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">:EOF</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">#|</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> allegro :</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> ("8.1 [Mac OS X] (May 6, 2009 10:09)"</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> 10 0 10 100 10 9 #<SYNCHRONOUS-OPERATING-SYSTEM-SIGNAL @ #x11779c6a> (10 (10 -1)) (10 (-1 -1)) (10 (-2 -1)) (10 (-2 -1)) (10 (10 -1)) (10 (-1 -1)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> mcl :</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> ("Version 5.2b6"</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> 10 0 10 100 10 9 #<CCL::STACK-OVERFLOW-CONDITION #x3736AB6> (10 (10 -1)) (10 (-1 -1)) (10 (-2 -1)) (10 (-2 -1)) (10 (10 -1)) (10 (-1 -1)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> sbcl :</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> ("1.0.2"</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> 10 0 10 100 10 9 #<SB-KERNEL::CONTROL-STACK-EXHAUSTED {11FD9881}> (10 (10 -1)) (10 (-1 -1)) (10 (-2 -1)) (10 (-2 -1)) (10 (10 -1)) (10 (-1 -1)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> cmucl :</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> ("19f (19F)"</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> 10 0 10 100 10 9 #<SIMPLE-ERROR {405F7135}> (10 (10 -1)) (10 (-1 -1)) (10 (-2 -1)) (10 (-2 -1)) (10 (10 -1)) (10 (-1 -1)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> ccl : </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> ("Version 1.3-RC1-r11719M (DarwinPPC32)"</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco"> 10 0 10 100 10 9 #<CCL::STACK-OVERFLOW-CONDITION #x8583DE6> (10 (10 -1)) (10 (-1 -1)) (10 (-2 -1)) (10 (-2 -1)) (10 (10 -1)) (10 (-1 -1)))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="1" style="font: 9.0px Monaco">|#</font></div><div><font class="Apple-style-span" size="1"><span class="Apple-style-span" style="font-size: 9px;"><br></span></font></div><div><font class="Apple-style-span" size="1"><span class="Apple-style-span" style="font-size: 9px;"><span class="Apple-style-span" style="font-size: medium; ">as said, i do have enough faith in the chef that i will eat what he puts on my plate, and either i am just lucky, or those behaviors covered by the spec are sufficiently constraining that the behavior of indefinite variables, although unspecified, is effectively prescribed.</span></span></font></div></div><div><br></div><div>still, as at least one of these consequences is obvious in hindsight only, it is incumbent upon the implementations to document this behavior, if only so that i can be sure it will still be on the menu when i come back next week.</div><div><br></div><div><br></div><div><br></div><div><br></div></body></html>