16 Apr 1997 00:20:18 -0400

Related articles |
---|

[12 earlier articles] |

Re: Definable operators Dave@occl-cam.demon.co.uk (Dave Lloyd) (1997-04-02) |

Re: Definable operators burley@gnu.ai.mit.edu (Craig Burley) (1997-04-03) |

Re: Definable operators rideau@ens.fr (Francois-Rene Rideau) (1997-04-03) |

Re: Definable operators leichter@smarts.com (Jerry Leichter) (1997-04-06) |

Re: Definable operators hrubin@stat.purdue.edu (1997-04-11) |

Re: Definable operators nmm1@cus.cam.ac.uk (1997-04-16) |

Re: Definable operators raw@math.wisc.edu (Matthew J. Raw) (1997-04-16) |

Re: Definable operators dlester@cs.man.ac.uk (1997-04-16) |

Re: Definable operators fanf@lspace.org (Tony Finch) (1997-04-18) |

Re: Definable operators monnier+/news/comp/compilers@tequila.cs.yale.edu (Stefan Monnier) (1997-04-18) |

Re: Definable operators burley@tweedledumb.cygnus.com (Craig Burley) (1997-04-18) |

Re: Definable operators apardon@rc4.vub.ac.be (1997-04-20) |

Re: Definable operators genew@vip.net (1997-04-20) |

[20 later articles] |

From: | Matthew J. Raw <raw@math.wisc.edu> |

Newsgroups: | comp.compilers |

Date: | 16 Apr 1997 00:20:18 -0400 |

Organization: | Compilers Central |

References: | 97-03-037 97-03-076 97-03-112 97-03-115 97-03-141 97-03-162 97-04-018 97-04-034 |

Keywords: | syntax, design |

Jerry Leichter <leichter@smarts.com> wrote:

*> No mathematician would, in mathematical usage, *ever* use + for string*

*> concatenation, for a very simple reason: "+" and related symbols (+ in*

*> a circle, capital sigma for repeated plus) are used for many different*

*> operations in different contexts, but always (OK, almost always - I*

*> can't think of an exception, but I'm sure *someone* will come up with*

*> one!) for *commutative* operations.*

Ordinal numbers are the order types of well-ordered sets. The sum of

two ordinals is the order type of the concatenation of the two order

types; it is not a commutative operation (although it does match

integer addition for finite ordinals).

*> (Interestingly, the other Algol68 convention - n*s meaning n copies of*

*> the string s - is somewhat better founded: It's common to think of the*

*> integers "acting on" some arbitrary structure. If there's an additive*

*> operation, using n*o for o+o+...+o - n copies - is pretty natural and*

*> reasonably widely used. On the other hand, no one would write o*n!)*

The product of linear orders A*B is formed by replacing each element

in B with a copy of A; if n is an order with n elements (the first n

should be in boldface), then A+A+...+A - n copies - is A*n. This is

not generally the same as n*A; omega+omega = omega*2 <> 2*omega.

Gannon and Horning ("Language Design for Programming Reliability",

IEEE Transactions on Software Engineering, Vol SE-1, No. 2, June 1975)

conclude that traditional operator precedence is less error prone than

the APL style, and that infix relation connectors are also error

prone. On the other hand, the infix logical operators were actually

bitwise operators, and the test subjects had little experience with

APL and widespread experience with languages with traditional

precedence. Is there any more recent experiment to answer such

questions?

In the absence of further actual studies, this seems to be a religious

issue like placement of semicolons (Gannon and Horning conclude that

semicolon as statement terminator is better).

--

Matthew Raw

raw@math.wisc.edu

--

Post a followup to this message

Return to the
comp.compilers page.

Search the
comp.compilers archives again.