Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 May 2008 15:44:00 +0100
From:      RW <fbsd06@mlists.homeunix.com>
To:        freebsd-questions@freebsd.org
Subject:   Re: Now what would you expect this to print out?
Message-ID:  <20080520154400.115e8817@gumby.homeunix.com.>
In-Reply-To: <200805201133.50963.jonathan@hst.org.za>
References:  <7d6fde3d0805190149y7a3bfa75j2ca6a67cef66e8f6@mail.gmail.com> <20080519094603.GC12033@osiris.chen.org.nz> <20080520014133.3447c282@gumby.homeunix.com.> <200805201133.50963.jonathan@hst.org.za>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 20 May 2008 11:33:50 +0200
Jonathan McKeown <jonathan@hst.org.za> wrote:

> On Tuesday 20 May 2008 02:41, RW wrote:
> > On Mon, 19 May 2008 21:46:03 +1200
> >
> > Jonathan Chen <jonc@chen.org.nz> wrote:

> > >     find /usr/src \( -name Makefile -or -name '*.mk' \) -print
> >
> > Why does that make a difference, when print always evaluates to
> > true?
> >
> > x AND true   =   x
> >
> > so
> >
> > (a OR b) AND true   =   a OR b
> >  a OR (b AND true)  =   a OR b
> 
> It makes a difference (as in programming) because -print is used for
> its side-effect rather than its value, and the binding order
> influences when the side-effect happens.

That's still a bit counter-intuitive because in normal programming
languages the binding order modifies side-effects via the evaluation
order. And in both cases the evaluation order would be expected to be
left-to-right, with -print running last.

I guess what you are saying is that the side-effect of print is based-on
a Boolean "running-value". And without the brackets, the first test  has
been evaluated, but not yet ORed into that "running-value", by the time
that print runs.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080520154400.115e8817>