guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

cons* versus apply


From: Kevin Ryde
Subject: cons* versus apply
Date: Thu, 21 Apr 2005 08:23:51 +1000
User-agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3 (gnu/linux)

cons* seems to mutate a list given to it from apply,

        (define x '(1 2 (3 4)))
        (apply cons* x)
        x
        => (1 2 3 4)

New code not changing the rest arg:


SCM_DEFINE (scm_cons_star, "cons*", 1, 0, 1,
            (SCM arg, SCM rest), "...")
#define FUNC_NAME s_scm_cons_star
{
  SCM ret = SCM_EOL;
  SCM *p = &ret;

  SCM_VALIDATE_REST_ARGUMENT (rest);

  for ( ; scm_is_pair (rest); rest = SCM_CDR (rest))
    {
      *p = scm_cons (arg, SCM_EOL);
      p = SCM_CDRLOC (*p);
      arg = SCM_CAR (rest);
    }

  *p = arg;
  return ret;
}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]