MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Defining a flat, orderless, one-identical function?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg28072] Re: [mg28046] Defining a flat, orderless, one-identical function?
  • From: Andrzej Kozlowski <andrzej at platon.c.u-tokyo.ac.jp>
  • Date: Fri, 30 Mar 2001 04:12:24 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

I just noticed that the solution I proposed has an undesirable property, in
that it gives:

In[8]:=
max[a,b]

Out[8]=
a

To following defintion avoids the problem:

In[1]:=
SetAttributes[max, {Flat, OneIdentity,
                Orderless, NumericFunction}]


In[2]:=
    max[a_?NumericQ, b_?NumericQ] := Max[a, b];
    max[a_ b_, a_ c_] := a max[b, c];
    (x_max/;Length[Unevaluated[x]]==1):=Hold[x][[1,1]]

This works as before except that this time:

In[5]:=
max[a]

Out[5]=
a

In[6]:=
max[a,b]

Out[6]=
max[a,b]

on 3/29/01 11:57 AM, Andrzej Kozlowski at andrzej at platon.c.u-tokyo.ac.jp
wrote:

> This is a rather complex issue tha thas been already discussed in some detail
> a number of times so you shoudl search the archives to understand more. Here
> is just one solution to your problem, the main idea of which, if I remeber
> correctly, was once suggested by Carl Woll:
> 
> In[1]:=
> SetAttributes[max, {Flat, OneIdentity,
> Orderless, NumericFunction}]
> 
> In[2]:=
> max[a_?NumericQ, b_?NumericQ] := Max[a, b];
> max[a_ b_, a_ c_] := a max[b, c];
> (x_max/;True):=Hold[x][[1,1]]
> 
> This should now work correctly, e.g.:
> 
> In[3]:=
> max[1,3]
> 
> Out[3]=
> 3
> 
> In[4]:=
> max[a,a]
> 
> Out[4]=
> a
> 
> In[5]:=
> max[a]
> 
> Out[5]=
> a
> 



-- 
Andrzej Kozlowski
Toyama International University
JAPAN

http://platon.c.u-tokyo.ac.jp/andrzej/
http://sigma.tuins.ac.jp/



  • Prev by Date: Re: Unconventional Max[] behavior
  • Next by Date: Re: Re: What is happening here? (TagSet)
  • Previous by thread: Re: Defining a flat, orderless, one-identical function?
  • Next by thread: Re: Defining a flat, orderless, one-identical function?