elegance vs. 'quick and dirty': a Mathematica expression beauty contest

• To: mathgroup at yoda.physics.unc.edu
• Subject: elegance vs. 'quick and dirty': a Mathematica expression beauty contest
• From: gaylord at ux1.cso.uiuc.edu
• Date: Fri, 3 Apr 1992 02:49:02 -0600

```a recent discussion of Flattening dealt with going from

startlist = {{a,a,a},{a,a},{{b,b},{b,b,b}},{a,a,a,a},{{b,b},{b}}}
to
finallist = {{a,a,a},{a,a},{b,b},{b,b,b},{a,a,a,a},{b,b},{b}}

Three solutions have been proposed:

#1

finallist = FixedPoint[
Replace[#,{A___,List[X___List],B___} :> {A,X,B}]&,
startlist]

Let \$A be an unused or local symbol

finallist = Flatten[List @@ (
startlist /. List[X___List] :> \$A[X]
/. {List->\$A,\$A->List}
)
] /. \$A->List

#2

f[x_List] :=
Apply[Join,Map[(If[Head[First[#]] === List, #, {#}] &), x]]

#3

f[{x__}] := Sequence[x] /; Not[ And @@ AtomQ /@ {x} ]
f[{x__}] := {x}
f /@ startlist

==========================

#2 and #3 have been proposed by their authors as being 'quick and dirty'. I
don't agree at all with the authors. I rank these expressions in terms of
'elegance in the order
#2, #3, #1

I think that the definition is #2 is by far the 'best-looking' expression
because it is very easily understood and explainable to almost anyone. It
also makes excellent use of list manipulation (Join, First), higher-order
functions (Map) and anonymous functions (..#..&) and especially because it
makes use of the fact that  M is comprised of expressions (Head, Apply).

I have alot of problems when I have to explain or even try to understand
myself an M expression that has  'Hold' in it. It almost always looks like
a 'work-around' or kludge.

I certainly do not want everyone to write M expressions in the same way
(one of the delights of M is that everything can be written almost every
way) and i learn the most about M from reading the varied ways of doing the
'same thing' as in the above example.

The question I want to raise is: how do people prefer their M expressions
to look?

Which of the above expressions do you like and why?

```

• Prev by Date: RE: Division of multi-var polynomials
• Next by Date: Re: why won't this work??
• Previous by thread: Re: why won't this work??
• Next by thread: Re: elegance vs. 'quick and dirty': a Mathematica expression beauty contest