Michael Carman (mjcarman / home.com) wrote:
: Most of the responses have centered on your example, not the subject of
: your question. Perl is non-orthogonal by design. From 'perldoc perl'
: 
:     "The language is intended to be practical (easy to use,
:      efficient, complete) rather than beautiful (tiny, elegant,
:      minimal)."

The odd thing is that I used to be an orthogonality zealot, but have come
over time to regard Perl as beautiful.

To my way of thinking, Perl is nonorthogonal in many of the same ways and
for the same reasons that human languages are nonorthogonal.  If I wish to
tell someone I am happy, I have an infinite number of ways to express
myself, from quasi-synonyms (happy|glad|joyous|pleased|...) to grammatical
arrangements (I am happy|I have been made happy|Happiness fills me).  This
allows me to shade meanings and extra intentional layers into what I say.

I would once have been offended that Perl provides a grep built-in which
can be trivially implement in terms of map.  Now, I see this as a very
useful semantic-level feature, a way to convey intention (to myself six
months from now, to maintenance programmers) and to express that intention
idiomaticly.

: IMHO, orthogonality is overrated. It sounds nice on the surface, but you
: invariably end up with a situation where you have to write some ugly
: hack to get around the restrictions of the language.

Amen.  I'm reminded of a comparison I once heard between APL and LISP: 
"APL is a flawless diamond, perfect, symmetrical, an irreducible whole. 
But add anything to it, and it's ruined.  LISP is a bucket of mud; add
anything to it, and it's still a bucket of mud." 

-- 
   |   Craig Berry - http://www.cinenet.net/~cberry/
 --*--  "The hills are burning, and the wind is raging; and the clock
   |   strikes midnight in the Garden of Allah." - Don Henley