# Help with sets

Steve Howell showell30 at yahoo.com
Wed Oct 13 03:40:08 CEST 2010

```On Oct 12, 5:54 pm, Lawrence D'Oliveiro <l... at geek-
central.gen.new_zealand> wrote:
> In message <mailman.1606.1286889135.29448.python-l... at python.org>, D'Arcy
>
> J.M. Cain wrote:
> > On Tue, 12 Oct 2010 23:34 +1300
> > Lawrence D'Oliveiro <l... at geek-central.gen.new_zealand> wrote:
>
> >>> Symmetry is always a tricky balance in programming languages.
>
> >> Is that what we used to call “orthogonality”?
>
> > No, orthogonality is something else.  "Orthogonal" means "perpendicular
> > to."
>
> The appropriate meaning is ‘being able to combine independently” (as in the
> orthogonal decomposition of a Fourier transform). An example of contemporary
> usage, from the “Revised Report on the Algorithmic Language ALGOL 68” (1974,
> I think):
>
>     0.1.2 Orthogonal design
>     The number of independent primitive concepts has been minimized in
>     order that the language be easy to describe, to learn, and to implement.
>     On the other hand, these concepts have been applied “orthogonally” in
>     order to maximize the expressive power of the language while trying to
>     avoid deleterious superﬂuities.
>
> So “orthogonality” has to do with use of minimum number of primitive
> components (operators, object types) in a maximum number of meaningful
> combinations.

Lawrence, I was actually talking about symmetry, not orthogonality.  I
was making the observation that Python doesn't always strive for
symmetry as its #1 driving concern (as well it shouldn't).  I think
your definition of orthogonality is more what Python is about.  I'd
say that symmetry and orthogonality go hand in hand for most
situations.   Symmetry often helps minimize the number of primitive
components, for example.  But sometimes symmetry arguments can be
forced or just be made on a weak foundation.

```