Aplanando una lista de listas

Soy nuevo en Scheme y en la programación funcional en general. ¿Alguien puede explicar este código, específicamente qué?kons yknil ¿son? El objetivo es aplanar una lista de listas.

(define (fold1 kons knil lst)  
  (if (null? lst)  
      knil  
      (fold1 kons (kons (car lst) knil) (cdr lst))))

Estoy bastante segurokons es una función que se aplica a dos argumentos pero aún no está totalmente seguro de su funcionalidad.

Respuestas a la pregunta(3)

Su respuesta a la pregunta