What's an example of the usefulness of C's left-to-right short-circuiting disjunction? -- Brad -----Original Message----- From: Will Adams [mailto:wadams@freescale.com] Sent: Tuesday, August 15, 2006 6:26 AM To: Brad Pierce Cc: sv-bc@eda-stds.org; michael.burns@freescale.com Subject: Re: [sv-bc] [Fwd: Issues with IEEE 1364-2005] The `&&&' operator can only appear in limited syntactic contexts. The following reasonable uses of conjunction are not allowed by the syntax. c = a &&& b ; if ( ! ( a &&& b ) ) The second of these is a problem because there is no `|||' short circuiting disjunction, and the syntax does not allow this operation to be expressed with `!' and `&&&'. If `&&' is not required to have short-circuit evaluation, and `&&&' is suggested as an alternative for cases where short-circuiting is desired, we have a situation where a familiar operator has unfamiliar semantics, and the familiar semantics are only available in limited contexts from an unfamiliar operator. will Brad Pierce wrote: >> It sounds like '&&&' is not appropriate to use as a general-purpose > short-circuit >> logical AND. > > Because &&& allows the > > expression 'matches' pattern &&& ... > > syntax, it can do *more* than a general-purpose short-circuit logical > AND. How does its greater generality make it inappropriate for a more > restrictive purpose? > > Regardless of the original reasons for introducing > > if (expression &&& expression) > > it behaves exactly like C users have come to expect from > > if (expression && expression) > > . > > -- Brad > > -----Original Message----- > From: Steven Sharp [mailto:sharp@cadence.com] > Sent: Monday, August 14, 2006 2:43 PM > To: Brad.Pierce@synopsys.COM; nikhil@bluespec.com > Cc: wadams@freescale.com; sv-bc@eda-stds.org; > michael.burns@freescale.com > Subject: Re: [sv-bc] [Fwd: Issues with IEEE 1364-2005] > > >> From: "Rishiyur Nikhil" <nikhil@bluespec.com> > >> '&&&' is not merely a conjunction operator, and its reason for >> existence is not to introduce short-circuiting-- it is because it has >> a > >> variable-binding function unique to the pattern-matching facilities >> of the language. > > Thanks for the explanation. It sounds like '&&&' is not appropriate > to use as a general-purpose short-circuit logical AND. > > Steven Sharp > sharp@cadence.com > >Received on Tue Aug 15 12:28:45 2006
This archive was generated by hypermail 2.1.8 : Tue Aug 15 2006 - 12:28:52 PDT