octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

test_bug_31371


From: Tatsuro MATSUOKA
Subject: test_bug_31371
Date: Mon, 6 Feb 2012 09:34:17 +0900 (JST)

>>>>> processing test_bug_31371
  ***** test
% Work around MATLAB bug where f(x)(y) is invalid syntax
% (This bug does not apply to Octave)
C = @(f,x) f(x);
C2 = @(f,x,y) f(x,y);

% Church Booleans
T = @(t,f) t;
F = @(t,f) f;

% Church Numerals
Zero  = @(f,x) x;
One   = @(f,x) f(x);
Two   = @(f,x) f(f(x));
Three = @(f,x) f(f(f(x)));
Four  = @(f,x) f(f(f(f(x))));

% Arithmetic Operations
Inc = @(a) @(f,x) f(a(f,x)); % Increment
Add = @(a,b) @(f,x) a(f,b(f,x));
Mult = @(a,b) @(f,x) a(@(x) b(f,x),x);
Dec = @(a) @(f,x) C(a(@(g) @(h) h(g(f)), @(u) x), @(u) u); % Decrement
Sub = @(a,b) b(Dec, a);

% Renderer - Convert church numeral to "real" number
render = @(n) n(@(n) n+1,0);

Hello

I have built the source of development branch on both MinGW and Ubuntu.
(changeset 14333:6dd710b73150)

For both cases, test_bug_31371 gave FAIL 

% Predicates
iszero = @(n) n(@(x) F, T);

% Y combinator implements recursion
Y = @(f) C(@(g) f(@(x) C(g(g), x)), ...
            @(g) f(@(x) C(g(g), x)));

Factorial = Y(@(f) @(n) C(C2(iszero(n), ...
               @(d) One, @(d) Mult(n, f(Dec(n)))),0));

assert (render(Factorial(Two), 2))
assert (render(Factorial(Three), 3))
assert (render(Factorial(Four), 12))
!!!!! test failed
value on right hand side of assignment is undefined


Regards

Tatsuro


reply via email to

[Prev in Thread] Current Thread [Next in Thread]