Logo

Programming-Idioms

  • Elixir
  • Rust
  • Lisp

Idiom #131 Successive conditions

Execute f1 if condition c1 is true, or else f2 if condition c2 is true, or else f3 if condition c3 is true.
Don't evaluate a condition when a previous condition was true.

(cond (c1 (f1))
      (c2 (f2))
      (c3 (f3)))
cond do
  c1 -> f1
  c2 -> f2
  c3 -> f3
end

conditionals must evaluate to boolean
if c1 { f1() } else if c2 { f2() } else if c3 { f3() }

Using if and else
match true {
    _ if c1 => f1(),
    _ if c2 => f2(),
    _ if c3 => f3(),
    _ => (),
}

Using match and guards
if c1 then
    f1;
elsif c2 then
    f2;
elsif c3 then
    f3;
end if;

assume that f, g, and h are procedure and that a and b are Boolean

New implementation...
< >
programming-idioms.org