Spłaszczanie listy list

Jestem nowym użytkownikiem programu i ogólnie programowania funkcjonalnego. Czy ktoś może wyjaśnić ten kod - konkretnie cokons iknil są? Celem jest spłaszczenie listy list.

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

Jestem dość pewnykons jest funkcją, ponieważ jest stosowana do dwóch argumentów, ale nadal nie jest całkowicie pewna jej funkcjonalności.

questionAnswers(3)

yourAnswerToTheQuestion