Re: Inner Bug ?
- To: mathgroup at yoda.ncsa.uiuc.edu
- Subject: Re: Inner Bug ?
- From: John Pfeifer <pfeifer at alw.nih.gov>
- Date: Wed, 6 Mar 91 15:12:33 EST
<Pekka Janhunen writes:>
>The expression
>
> Inner[f,{x,y,z},{1,2,3},List]/.f->List (1)
>
>evaluates to {{x, 1}, {y, 2}, {z, 3}} as expected.
>But the seemingly equivalent expression
>
> Inner[List,{x,y,z},{1,2,3},List] (2)
>
>evaluates to {{x, y, z}, {1, 2, 3}}
First off, they are not equivalent expressions:
In[1]:= FullForm[Literal[Inner[List,{x,y,z},{1,2,3},List]]]
Out[1]//FullForm= Literal[Inner[List, List[x, y, z], List[1, 2, 3], List]]
In[2]:= FullForm[Literal[Inner[f,{x,y,z},{1,2,3},List] /. f->List]]
Out[2]//FullForm=
Literal[ReplaceAll[Inner[f, List[x, y, z], List[1, 2, 3], List],
Rule[f, List]]]
and so, in the second, the replace doesn't occur until _after_ the inner
product is computed.
An expression equivalent to (1) is:
Release[Hold[Inner[List,{x,y,z},{1,2,3},List]] /. f->List]
Upon further exploration it seems part of the difficulty is with your two
original lists having the head List and the first List:
In[3]:= Inner[List, Multipy[x, y, z], Multiply[1, 2, 3],List]
Out[3]= {{x, 1}, {y, 2}, {z, 3}}
In[4]:= Inner[List, List[x, y, z], List[1, 2, 3],g]
Out[4]= {g[x, y, z], g[1, 2, 3]}
Why? I don't know.
#include <stdsig.h>
John Pfeifer internet: pfeifer at alw.nih.gov
"The most creaative and holy of men are always quite mad.
It is simply a social thing as to wether one is sane or
_insane_." -The Madonna Vampira