Question: Very special evaluation rules of `if`

In the following code, why is B returned unevaluated?

restart:
A:= a:  B:= 2:
F:= _a-> eval(`if`(A,B,C), a= _a):
F(true);
                               B
eval(B);
                               2

Please Wait...