comparison man/internals/internals.texi @ 253:157b30c96d03 r20-5b25

Import from CVS: tag r20-5b25
author cvs
date Mon, 13 Aug 2007 10:20:27 +0200
parents 262b8bb4a523
children 11cf20601dec
comparison
equal deleted inserted replaced
252:afb15df44434 253:157b30c96d03
3264 This function provides a Lisp primitive that implements the MD5 secure 3264 This function provides a Lisp primitive that implements the MD5 secure
3265 hashing scheme, used to create a large hash value of a string of data such that 3265 hashing scheme, used to create a large hash value of a string of data such that
3266 the data cannot be derived from the hash value. This is used for 3266 the data cannot be derived from the hash value. This is used for
3267 various security applications on the Internet. 3267 various security applications on the Internet.
3268 3268
3269
3270
3271 @example
3272 7000 mocklisp.c
3273 @end example
3274
3275 This function provides some emulation of MockLisp, a version of Lisp
3276 provided in Gosling Emacs (aka Unipress Emacs), from which some old
3277 versions of GNU Emacs were derived. You have to explicitly enable this
3278 code with a configure option and shouldn't normally, because it changes
3279 the semantics of XEmacs Lisp in ways that are not desirable for normal
3280 Lisp programs.
3281 3269
3282 3270
3283 3271
3284 @node Modules for Interfacing with the Operating System 3272 @node Modules for Interfacing with the Operating System
3285 @section Modules for Interfacing with the Operating System 3273 @section Modules for Interfacing with the Operating System
5031 @node Evaluation 5019 @node Evaluation
5032 @section Evaluation 5020 @section Evaluation
5033 5021
5034 @code{Feval()} evaluates the form (a Lisp object) that is passed to 5022 @code{Feval()} evaluates the form (a Lisp object) that is passed to
5035 it. Note that evaluation is only non-trivial for two types of objects: 5023 it. Note that evaluation is only non-trivial for two types of objects:
5036 symbols and conses. Under normal circumstances (i.e. not mocklisp) a 5024 symbols and conses. A symbol is evaluated simply by calling
5037 symbol is evaluated simply by calling symbol-value on it and returning 5025 symbol-value on it and returning the value.
5038 the value.
5039 5026
5040 Evaluating a cons means calling a function. First, @code{eval} checks 5027 Evaluating a cons means calling a function. First, @code{eval} checks
5041 to see if garbage-collection is necessary, and calls 5028 to see if garbage-collection is necessary, and calls
5042 @code{Fgarbage_collect()} if so. It then increases the evaluation depth 5029 @code{Fgarbage_collect()} if so. It then increases the evaluation depth
5043 by 1 (@code{lisp_eval_depth}, which is always less than @code{max_lisp_eval_depth}) and adds an 5030 by 1 (@code{lisp_eval_depth}, which is always less than @code{max_lisp_eval_depth}) and adds an
5056 At this point, the function to be called is determined by looking at 5043 At this point, the function to be called is determined by looking at
5057 the car of the cons (if this is a symbol, its function definition is 5044 the car of the cons (if this is a symbol, its function definition is
5058 retrieved and the process repeated). The function should then consist 5045 retrieved and the process repeated). The function should then consist
5059 of either a @code{Lisp_Subr} (built-in function), a 5046 of either a @code{Lisp_Subr} (built-in function), a
5060 @code{Lisp_Compiled_Function} object, or a cons whose car is the symbol 5047 @code{Lisp_Compiled_Function} object, or a cons whose car is the symbol
5061 @code{autoload}, @code{macro}, @code{lambda}, or @code{mocklisp}. 5048 @code{autoload}, @code{macro} or @code{lambda}.
5062 5049
5063 If the function is a @code{Lisp_Subr}, the lisp object points to a 5050 If the function is a @code{Lisp_Subr}, the lisp object points to a
5064 @code{struct Lisp_Subr} (created by @code{DEFUN()}), which contains a 5051 @code{struct Lisp_Subr} (created by @code{DEFUN()}), which contains a
5065 pointer to the C function, a minimum and maximum number of arguments 5052 pointer to the C function, a minimum and maximum number of arguments
5066 (possibly the special constants @code{MANY} or @code{UNEVALLED}), a 5053 (possibly the special constants @code{MANY} or @code{UNEVALLED}), a
5072 5059
5073 If the function is a @code{Lisp_Compiled_Function} object or a lambda, 5060 If the function is a @code{Lisp_Compiled_Function} object or a lambda,
5074 @code{apply_lambda()} is called. If the function is a macro, 5061 @code{apply_lambda()} is called. If the function is a macro,
5075 [..... fill in] is done. If the function is an autoload, 5062 [..... fill in] is done. If the function is an autoload,
5076 @code{do_autoload()} is called to load the definition and then eval 5063 @code{do_autoload()} is called to load the definition and then eval
5077 starts over [explain this more]. If the function is a mocklisp, 5064 starts over [explain this more].
5078 @code{ml_apply()} is called.
5079 5065
5080 When @code{Feval} exits, the evaluation depth is reduced by one, the 5066 When @code{Feval} exits, the evaluation depth is reduced by one, the
5081 debugger is called if appropriate, and the current backtrace structure 5067 debugger is called if appropriate, and the current backtrace structure
5082 is removed from the list. 5068 is removed from the list.
5083 5069