1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 19:50:24 +02:00

Don't recurse in drop-right

* module/srfi/srfi-1.scm (drop-right): Don't recurse, sadly, as we have
  a stack limit.
This commit is contained in:
Andy Wingo 2016-07-12 15:53:40 +02:00
parent e1cb762c9a
commit af3796b11c

View file

@ -374,10 +374,10 @@ end-of-list checking in contexts where dotted lists are allowed."
lag)))
(define (drop-right lis k)
(let recur ((lag lis) (lead (drop lis k)))
(let lp ((lag lis) (lead (drop lis k)) (result '()))
(if (pair? lead)
(cons (car lag) (recur (cdr lag) (cdr lead)))
'())))
(lp (cdr lag) (cdr lead) (cons (car lag) result))
(reverse result))))
(define (take! lst i)
"Linear-update variant of `take'."