Copyright (C) 2000-2012 |
GNU Info (emacs-lisp-intro.info)type-of-animal in detailThe `type-of-animal' Function in Detail --------------------------------------- Let's look at the `type-of-animal' function in detail. The function definition for `type-of-animal' was written by filling the slots of two templates, one for a function definition as a whole, and a second for an `if' expression. The template for every function that is not interactive is: (defun NAME-OF-FUNCTION (ARGUMENT-LIST) "DOCUMENTATION..." BODY...) The parts of the function that match this template look like this: (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." BODY: THE `if' EXPRESSION) The name of function is `type-of-animal'; it is passed the value of one argument. The argument list is followed by a multi-line documentation string. The documentation string is included in the example because it is a good habit to write documentation string for every function definition. The body of the function definition consists of the `if' expression. The template for an `if' expression looks like this: (if TRUE-OR-FALSE-TEST ACTION-TO-CARRY-OUT-IF-THE-TEST-RETURNS-TRUE) In the `type-of-animal' function, the code for the `if' looks like this: (if (equal characteristic 'fierce) (message "It's a tiger!"))) Here, the true-or-false-test is the expression: (equal characteristic 'fierce) In Lisp, `equal' is a function that determines whether its first argument is equal to its second argument. The second argument is the quoted symbol `'fierce' and the first argument is the value of the symbol `characteristic'--in other words, the argument passed to this function. In the first exercise of `type-of-animal', the argument `fierce' is passed to `type-of-animal'. Since `fierce' is equal to `fierce', the expression, `(equal characteristic 'fierce)', returns a value of true. When this happens, the `if' evaluates the second argument or then-part of the `if': `(message "It's tiger!")'. On the other hand, in the second exercise of `type-of-animal', the argument `zebra' is passed to `type-of-animal'. `zebra' is not equal to `fierce', so the then-part is not evaluated and `nil' is returned by the `if' expression. automatically generated by info2www version 1.2.2.9 |