I don't understand how the run n (x) g0 g1 ... to run through listo
the listo is defined like this
(define listo
(lambda (l)
(conde
[(nullo l) #s)]
[(pairo l)
(fresh (d)
(cdro l d)
(listo d))]
[else #u])))
The Reasoned Schemer on page 29 in segment 14 says the code
(run 5 (x)
(listo (a b c . x)))
produces the result
(()
(_.0)
(_.0 _.1)
(_.0 _.1 _.2)
(_.0 _.1 _.2 _.3))
Would you explain how does this happened ? Thank you in advance.