SRFI-31 - A special form ‘rec’ for recursive evaluation
SRFI-31 defines a special form that can be used to create self-referential expressions more conveniently. The syntax is as follows:
lisp
<rec expression> --> (rec <variable> <expression>)
<rec expression> --> (rec (<variable>+) <body>)The first syntax can be used to create self-referential expressions, for example:
lisp
guile> (define tmp (rec ones (cons 1 (delay ones))))The second syntax can be used to create anonymous recursive functions:
lisp
guile> (define tmp (rec (display-n item n)
(when (positive? n)
(display item) (newline)
(display-n item (- n 1)))))
guile> (tmp 42 3)
42
42
42
guile>