MiniKanren lolo

(define lolo
  (lambda (l)
    (conde
      ((nullo l) #s) ;; Associate l with null
      ((fresh (a)
         (caro l a) ;; Head of list should be a list
         (listo a)) 
       (fresh (d)   ;; Tail of list should be a list of lists
         (cdro l d)
         (lolo d))) ;; Only when both succeed this goal succeeds
       (else #u))))