GNU Info

Info Node: (emacs-lisp-intro.info)if in more detail

(emacs-lisp-intro.info)if in more detail


Next: type-of-animal in detail Prev: if Up: if
Enter node , (file) or (file)node

`if' in more detail
-------------------

   An `if' expression written in Lisp does not use the word `then'; the
test and the action are the second and third elements of the list whose
first element is `if'.  Nonetheless, the test part of an `if'
expression is often called the "if-part" and the second argument is
often called the "then-part".

   Also, when an `if' expression is written, the true-or-false-test is
usually written on the same line as the symbol `if', but the action to
carry out if the test is true, the "then-part", is written on the
second and subsequent lines.  This makes the `if' expression easier to
read.

     (if TRUE-OR-FALSE-TEST
         ACTION-TO-CARRY-OUT-IF-TEST-IS-TRUE)

The true-or-false-test will be an expression that is evaluated by the
Lisp interpreter.

   Here is an example that you can evaluate in the usual manner.  The
test is whether the number 5 is greater than the number 4.  Since it
is, the message `5 is greater than 4!' will be printed.

     (if (> 5 4)                             ; if-part
         (message "5 is greater than 4!"))   ; then-part

(The function `>' tests whether its first argument is greater than its
second argument and returns true if it is.)

   Of course, in actual use, the test in an `if' expression will not be
fixed for all time as it is by the expression `(> 5 4)'.  Instead, at
least one of the variables used in the test will be bound to a value
that is not known ahead of time.  (If the value were known ahead of
time, we would not need to run the test!)

   For example, the value may be bound to an argument of a function
definition.  In the following function definition, the character of the
animal is a value that is passed to the function.  If the value bound to
`characteristic' is `fierce', then the message, `It's a tiger!' will be
printed; otherwise, `nil' will be returned.

     (defun type-of-animal (characteristic)
       "Print message in echo area depending on CHARACTERISTIC.
     If the CHARACTERISTIC is the symbol `fierce',
     then warn of a tiger."
       (if (equal characteristic 'fierce)
           (message "It's a tiger!")))

If you are reading this inside of GNU Emacs, you can evaluate the
function definition in the usual way to install it in Emacs, and then
you can evaluate the following two expressions to see the results:

     (type-of-animal 'fierce)
     
     (type-of-animal 'zebra)

When you evaluate `(type-of-animal 'fierce)', you will see the
following message printed in the echo area: `"It's a tiger!"'; and when
you evaluate `(type-of-animal 'zebra)' you will see `nil' printed in
the echo area.


automatically generated by info2www version 1.2.2.9