On Wed, 09 Nov 2022, Damien Mattei <damien.mat...@gmail.com> 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---
(use-modules
 (ice-9 control))

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

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

-- 
Olivier Dion
oldiob.dev

Reply via email to