infeval:true v. ev(%,infeval)



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.
>
>