On Wed, 09 Nov 2022, Damien Mattei <[email protected]> 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