Сведение списка списков

Я новичок в Схеме и функциональном программировании в целом. Может кто-нибудь объяснить этот код - что конкретноkons а такжеknil находятся? Цель состоит в том, чтобы сгладить список списков.

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

Я вполне уверенkons это функция, поскольку она применяется к двум аргументам, но все еще не совсем уверена в ее функциональности.

Ответы на вопрос(3)

Ваш ответ на вопрос