&quot;IfThenElse&quot; in Rebol (called <i>either</i>) is also just a function with 3 args:<p><pre><code>    either 1 = 1 [print &quot;true!&quot;] [print &quot;false!&quot;]
</code></pre>
Here&#x27;s an example of writing this in Rebol directly:<p><pre><code>  if-then-else: function [
      cond [logic!]
      true-block [block!]
      false-block [block!]
    ][
      switch cond [
          #[true]  [do true-block]
          #[false] [do false-block]
      ]
  ]
</code></pre>
This works because blocks aren&#x27;t evaluated until explicitly called:<p><pre><code>  &gt;&gt; if-then-else 1 = 1 [print &quot;true!&quot;] [print &quot;false!&quot;]
  true!

  &gt;&gt; if-then-else 1 = 2 [print &quot;true!&quot;] [print &quot;false!&quot;]
  false!</code></pre>