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