Por que comparar os resultados das funções é uma exceção de guarda ilegal em Erlang?

Por que isso é ilegal?

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

Quer dizer, se eu definir as duas partes da expressão separadamente, tudo funciona bem. Mas comparar retornos de funções deve ser trivial, não deveria? Acho que estou perdendo algo mais abaixo disso.

questionAnswers(1)

yourAnswerToTheQuestion