[Top][All Lists]

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

Re: escaping from a recursive call

From: Olivier Dion
Subject: Re: escaping from a recursive call
Date: Wed, 09 Nov 2022 11:51:55 -0500

On Wed, 09 Nov 2022, Damien Mattei <> wrote:
> i need a way to escape not only the current call of a recursive function
> (it is already done) but alls:
> example:
> (def (foo n)
>      (cond ((= n 0) 'end0)
>   ((= n 7) (return 'end7))
>   (else (cons n (foo {n - 1})))))

Is that what you want?
--8<---------------cut here---------------start------------->8---
 (ice-9 control))

(define (foo n)
  (let/ec return
    (let loop ((n n))
       ((= n 0) 'end0)
       ((= n 7) (return 'end7))
        (cons n (loop (1- n))))))))

(pk (foo 5))
(pk (foo 10))
--8<---------------cut here---------------end--------------->8---

Olivier Dion

reply via email to

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