Erlangのガードエクスプレッション

なかなかErlangの文法に馴染めません。今日つまずいたのは、if文の中のガードにファンクションが使えないという点。case文を使ったものをif文で書き直そうとしたら駄目でした。なんかよくわからない。googleしたら、やっぱし駄目らしいことが書いてあったけど。変なの。

filt (P, [H|T]) ->
  if 
   P(H) -> [H | filt(P, T)];  <--これ駄目!
    true -> filt(P, T)
  end;
filt (P, []) -> [].