Sorry, I got this wrong.
ev(..., infeval) is in fact equivalent to ev(..., infeval=true), which
is equivalent to block([infeval:true], ev(...) ).
It is simply not equivalent to block([infeval:true], ... ).
In this case, the documentation is actually fairly clear: infeval is a flag
that controls the behavior of ev, not of regular evaluation.
Thus, we have:
ev(a,a=b,b=c) => b
ev(a,a=b,b=c,infeval) => c
ev(a,a=b,b=c,infeval=true) => c
infeval: true$ ev(a,a=b,b=c) => c <<< infeval changes the
behavior of ev
Do I think any of this is sensible? No. 'ev' is a disaster....
-s
On Wed, Mar 30, 2011 at 13:14, Henry Baker <hbaker1 at pipeline.com> wrote:
> Perhaps the manual could indicate the difference between the two?
>
> The manual seems to indicate that
>
> abc,flag1,flag2,flag3;
>
> is equivalent to
>
> ev(abc,flag1,flag2,flag3);
>
> At 08:52 PM 3/29/2011, Stavros Macrakis wrote:
> >ev(xxx,yyy) can mean many things. It can be (more or less) equivalent to
> block([yyy:true],xxx) or to yyy(xxx) or various other things.
> >
> >In the case of infeval, it is just an option setting to ev, and *not*
> equivalent to xxx,infeval:true or infeval(xxx).
> >
> >Ev is just a hodgepodge of functionality, some of which (alas!) is only
> accessible through it, e.g. infeval.
> >
> > -s
> >
> >On Mon, Mar 28, 2011 at 13:10, Henry Baker <hbaker1 at pipeline.com> wrote:
> >Is there any reason why
> >
> >ev(...expression...,infeval)
> >
> >should be strictly more powerful than
> >
> >infeval:true;
> >...expression...;
> >
> >For some reason, merely assigning infeval:true didn't produce the fully
> eval'ed expression, but ev(...expression...,infeval) did.
>
>