On 14 Nov 2012, at 11:31, Alexei Matveev wrote:

> I see interface of scm_apply_1() and scm_apply() are the same
> and dont get the difference [1].

File libguile/eval.c in the distribution gives:
/* Apply a function to a list of arguments.

   This function is exported to the Scheme level as taking two
   required arguments and a tail argument, as if it were:
        (lambda (proc arg1 . args) ...)
   Thus, if you just have a list of arguments to pass to a procedure,
   pass the list as ARG1, and '() for ARGS.  If you have some fixed
   args, pass the first as ARG1, then cons any remaining fixed args
   onto the front of your argument list, and pass that as ARGS.  */

Then scm_apply_1() does the first:
SCM
scm_apply_1 (SCM proc, SCM arg1, SCM args)
{
  return scm_apply (proc, scm_cons (arg1, args), SCM_EOL);
}

Hans





Reply via email to