Programación en Erlang/Estructuras de decisión e iteración

  if
     GuardSeq1 ->
          Body1;
     ...;
     GuardSeqN ->
          BodyN
  end

Las ramas de un si-expresión se analizan de forma secuencial hasta que una secuencia de guardia GuardSeq que se evalúa como verdadera se encuentra. Entonces, el organismo correspondiente (la secuencia de expresiones separadas por ',') es evaluada. El valor de retorno del cuerpo es el valor de retorno de la expresión del IF.

Si no hay secuencia de guardia es cierto, una carrera if_clause tiempo de error. Si es necesario, la expresión de la guardia real puede ser utilizado en la última rama, ya que la secuencia de la guardia siempre es cierto.

  is_greater_than(X,Y) ->
      if
        X>Y ->
          true;
        true -> % works on an ´else´ branch
          false
      end

La expresión expr es evaluado y el patrón de los patrones se comparan con la secuencia de resultados. Si un partido tiene éxito y la secuencia de la guardia opcional GuardSeq es cierto, el organismo correspondiente se evalúa.
El valor de retorno del cuerpo es el valor de retorno de la expresión caso. Si no hay un patrón de coincidencia con una secuencia de la guardia real, una ejecución case_clause tiempo de error.

   case Expr of
       Pattern1 [when GuardSeq1] ->
          Body;
       ....;
       PatternN [when GuardSeqN] ->
          BodyN
   end