Допустим, у меня есть процедура foo, которая принимает три аргумента и возвращает список из них, удвоенный:
(define (foo a b c)
(list (* 2 a ) (* 2 b) (* 2 c)))
Я хотел бы иметь возможность создать другую процедуру, которая принимает список и вызывает foo, используя элементы списка в качестве аргументов, например:
(define (fooInterface myList)
...)
(fooInterface (list 1 2 3))
Смысл в том, что я не хочу писать fooInterface, предполагая, что у foo всегда будет 3 аргумента. То есть, если я добавлю дополнительный аргумент в foo, fooInterface все равно будет работать, если переданный список содержит 3 элемента.