Scheme / Lisp zagnieżdżone pętle i rekursja

Próbuję rozwiązać problem w schemacie, który wymaga użycia pętli zagnieżdżonej lub rekurencji zagnieżdżonej.

na przykład Mam dwie listy, które muszę sprawdzić na wariancie ich kartezjańskiego produktu.

Jaki jest najlepszy sposób podejścia do tego typu problemów? Jakieś wskazówki, jak uprościć tego typu funkcje?

Rozwinę trochę, ponieważ moje zamiary mogą nie być wystarczająco jasne.

Regularna funkcja rekurencyjna może wyglądać tak:

(define (factorial n)
  (factorial-impl n 1))

(define (factorial-impl n t)
  (if (eq? n 0)
      t
      (factorial-impl (- n 1) (* t n))))

Próba napisania podobnej funkcji, ale z zagnieżdżoną rekursją, wprowadza nowy poziom złożoności kodu i zastanawiałem się, jaki jest podstawowy wzór dla tych typów funkcji, ponieważ może on stać się bardzo brzydki, bardzo szybki.

Jako konkretny przykład szukam najłatwiejszego sposobu, aby odwiedzić wszystkie elementy w kartezjańskim produkcie z dwóch list.

questionAnswers(3)

yourAnswerToTheQuestion