[][src]Trait fortraith::iff

pub trait iff {
    type Result;
}

( if / else / then ) conditional expression

ifs can be nested and can be used both inside and outside of a function. else clause is optional

Examples

Return 9 if 10 is less than 1, else return 9

forth!(
    10 1 < if 5 else 9 then
    return type Out as top
);
assert_eq!(Out::eval(), 9);

FizzBuzz (of course), there are no strings or chars in fortraith so Fizz = true, Buzz = false and FizzBuzz = 0

forth!(
   : FizzBuzz
   dup 3 % 0 = if
       5 % 0 = if
           0 (FizzBuzz)
       else
           true (Fizz)
       then
   else
       dup 5 % 0 = if
           drop false (Buzz)
       then
   then ;
   1 FizzBuzz return type Out1 as top
   2 FizzBuzz return type Out2 as top
   3 FizzBuzz return type Out3 as top
   4 FizzBuzz return type Out4 as top
   5 FizzBuzz return type Out5 as top
   10 5 + FizzBuzz return type Out15 as top
);
assert_eq!(Out1::eval(), 1);
assert_eq!(Out2::eval(), 2);
assert_eq!(Out3::eval(), true);
assert_eq!(Out4::eval(), 4);
assert_eq!(Out5::eval(), false);
assert_eq!(Out15::eval(), 0);

Associated Types

type Result

Loading content...

Implementors

Loading content...