¿Por qué comparar resultados de funciones es una excepción de guardia ilegal en Erlang?

¿Por qué es ilegal?

min1_e_( F, X, E) ->
    if 
        F( X + 2*E ) < F( X + E ) ->   % ?
            min1_e_( F, X, E*2 );
        true ->
            E
    end.

Quiero decir, si defino ambas partes de la expresión por separado, funciona bien. Pero comparar los retornos de funciones debería ser trivial, ¿no es así? Creo que me estoy perdiendo algo más debajo de eso.

Respuestas a la pregunta(1)

Su respuesta a la pregunta