On Sat, Feb 05, 2005 at 10:04:02PM +0800, Autrijus Tang wrote: > On Sat, Feb 05, 2005 at 01:52:05PM +0000, Nicholas Clark wrote: > > > #t and (0 | 6) < 2 # reduction in boolean context(!) > > > > Why is it allowed to do this? > > Because "and" forces boolean context to determine whether it > short-circuits or not. However, I should've make it clear that > if the left hand side evaluates to #f, it will return the junction > itself, not #f. This is true in both spec and pugs implementation.
(Without understanding the background to the implementation of junctions) why are you using a short-circuiting "and"? Surely if you take an expression that contains the junction (a|b) and convert that to ... a ... and ... b ... then you are implying an order to the elements of a junction? I didn't think that junctions had order - I thought that they were sets. Nicholas Clark