学校の課題でSchemeの"eval"関数相当のモノを作った。一度理解してしまえば、Lisp系の処理系の"eval"部分は案外容易に理解出来るものである。それを示す為に、今回はEmacsLispの"eval"関数を見ていく事にしよう(in src/eval.c)。これがEmacsLispの心臓部だ。まずは全体を見通してみる。 in src/eval.c DEFUN ("eval", Feval, Seval, 1, 1, 0, doc: /* Evaluate FORM and return its value. */) (form) Lisp_Object form; { Lisp_Object fun, val, original_fun, original_args; Lisp_Object funcar; struct backtrace backtrace; struct gcp