[[or Talk Page|Discuss this page]] === or === See [[http://xelerus.de/index.php?s=functions&function=135|or at Xelerus]] ^ Syntax | (or exp1 [exp2 ... expn]) -> value/Nil | ^ Arguments | exp1: An expression that evaluates to **Nil** or something else | ^ [exp2 ... expn] | Additional expressions to be evaluated | ^ Category | [[logical operator functions|logical operator]] | ^ Returns | The value of the first expression that does not return **Nil**, or **Nil** if there is none. If there is only one argument, returns the value of that argument. | ^ Description | Uses lazy evaluation, which means that it stops after it finds a non-**Nil** value or ends up evaluating every argument if all of them return **Nil** | === Example === (or 1 2 3 4 5 (setq foo 6)) Return **1**. Also, foo will not be set to **6**. (or Nil (eq (setq foo "bar") "baz") "qux") Returns **"qux"**. Also, **foo** will be set to **"bar"** (errblock (error b) (setq b (or c 0)) b ) If **c** has not been bound anything, then this code will return the error **No binding for symbol [c] ### (or c 0) ###** since errors are not **Nil**. Beware of bad code when using **errBlock**, as **or** will simply evaluate the thrown errors as **true** Return to [[:Functions]] list