Copyright (C) 2000-2012 |
GNU Info (elisp)Defining FunctionsDefining Functions ================== We usually give a name to a function when it is first created. This is called "defining a function", and it is done with the `defun' special form. - Special Form: defun name argument-list body-forms `defun' is the usual way to define new Lisp functions. It defines the symbol NAME as a function that looks like this: (lambda ARGUMENT-LIST . BODY-FORMS) `defun' stores this lambda expression in the function cell of NAME. It returns the value NAME, but usually we ignore this value. As described previously (Note: Lambda Expressions), ARGUMENT-LIST is a list of argument names and may include the keywords `&optional' and `&rest'. Also, the first two of the BODY-FORMS may be a documentation string and an interactive declaration. There is no conflict if the same symbol NAME is also used as a variable, since the symbol's value cell is independent of the function cell. Note: Symbol Components. Here are some examples: (defun foo () 5) => foo (foo) => 5 (defun bar (a &optional b &rest c) (list a b c)) => bar (bar 1 2 3 4 5) => (1 2 (3 4 5)) (bar 1) => (1 nil nil) (bar) error--> Wrong number of arguments. (defun capitalize-backwards () "Upcase the last letter of a word." (interactive) (backward-word 1) (forward-word 1) (backward-char 1) (capitalize-word 1)) => capitalize-backwards Be careful not to redefine existing functions unintentionally. `defun' redefines even primitive functions such as `car' without any hesitation or notification. Redefining a function already defined is often done deliberately, and there is no way to distinguish deliberate redefinition from unintentional redefinition. - Function: defalias name definition This special form defines the symbol NAME as a function, with definition DEFINITION (which can be any valid Lisp function). The proper place to use `defalias' is where a specific function name is being defined--especially where that name appears explicitly in the source file being loaded. This is because `defalias' records which file defined the function, just like `defun' (Note: Unloading). By contrast, in programs that manipulate function definitions for other purposes, it is better to use `fset', which does not keep such records. See also `defsubst', which defines a function like `defun' and tells the Lisp compiler to open-code it. Note: Inline Functions. automatically generated by info2www version 1.2.2.9 |