要在Matlab中进行beta降低吗?

时间:2013-10-23 12:48:23

标签: matlab functional-programming lambda lambda-calculus

如何在Matlab中进行如下的beta减少?

enter image description here

我的目标是避免重复分配和懒惰评估事物 - 可能与问题multiple step anonymous functions有关。

显然,大多数功能特性仅在Matlab2013B中得到支持。

2 个答案:

答案 0 :(得分:1)

这就是你的意思:

x = 3;
f = @(y)(x+x*y);

现在f(y)是函数3+3*y

所以你可以把它放在循环中,例如:

f = {};
for x = 1:5
   f{x} = @(y)(x+x*y);
end;

然后为f(2)

的每个值找到x
cellfun(@(y)y(2), f)

ans =   
    3    6    9   12   15

答案 1 :(得分:0)

重申Dan的回答,这就是我在Octave中得到的结论:

octave:1> f = @(x) @(y) x + y
f =
   @(x) @(y) x + y

octave:2> g = f (2)
g =
   @(y) x + y

octave:3> g (3)
ans =  5

但我不知道Matlab ......