[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: Order of Evaluation

**From**: |
fi |

**Subject**: |
Re: Order of Evaluation |

**Date**: |
Tue, 20 Aug 2019 11:21:24 +0200 |

**User-agent**: |
Mutt/1.5.24 (2015-08-30) |

On Mon, Aug 19, 2019 at 06:37:41PM -0400, Przemek Klosowski via Help list for
GNU Octave wrote:
>* On 8/19/19 2:56 PM, address@hidden wrote:*
>* >y = @(x) H = h(x), f(H) + g(H); % also wrong if in brackets*
>* *
>* I thought it would work to create a 'fake' compound statement:*
>* *
>* y = @(x) if true H = h(x), f(H) + g(H) end;*
>* *
>* but this somehow fails, as if the conditional was not evaluated---the*
>* function does not return anything.*
>* *
>* Given that "if true 123 end" returns 123, and "y = @(x) 123 ;" returns a*
>* function returning 123, why does*
>* *
>* y = @(x) if true 123 end ;*
>* *
>* fail to return anything? (Octave 4.2.2 on Linux)*
I think Octave does this because Matlab does it.
It seems, that only real expressions (that are composed from operator
which really return a value) are allowed in anonymous
functions. The if clause seems to be interpreted as a statement which
does not return anything. There are other examples: the statement
y = x = 3; % will fail in Matlab, because assignment is a statement
% and not an operation.
In Octave the assigment is an operation which returns a value and so
Octave accepts multiple assignment.
>* In any case, https://octave.org/doc/v4.2.0/Anonymous-Functions.html suggests*
>* that anonymous functions aren't universally useful and recommends simply*
>* using function handles.*
yes, but in this case my expressions are basically simple and I try to
increase the performance (which I believe is an advantage of anonymous
functions).
Best Regards
Torsten Finke
--
------------------------------------------------------------------------
Dr.-Ing. Torsten Finke
address@hidden
GnuPG-Key: 1024D/8F2300D8
Fingerprint: B929 7FA5 4D2E E9B6 C55C 8A0B 7DF4 86E9 8F23 00D8
------------------------------------------------------------------------