2010-09-27 2 views
1

Это привело меня в абсолютно орехи. У меня есть функция заменить следующим образом:Звонки функций вложенности

(define (mysub x bind body) ;; x, bind, body are lists 
    ...) 

Мне нужно вызвать функцию следующим образом:

;;this is the explicit call for when length x = length bind = 2. 
;;how do I generalize these nested calls? 

;;in case it's not obvious, i'm passing mysub as the third parameter 
;;to a previous mysub call 

(mysub (first x) (first bind) (mysub (first (rest x)) (first (rest bind)) body) 

Это лишь малая часть моей домашней работы.

Я попытался использовать карту с лямбдой-функциями, но каждый подход, который я пытался оставляет меня что-то вроде:

((x1)(bind1)(body) (x2)(bind2)(body)) ;;I've found a million ways to get this 

Мне нужно вызвать это, пока список й не пусто. Я не знаю, почему эта идея меня так сильно трогает, любая помощь очень ценится.

ответ

0

Из примера с длиной = 2, я думаю, что обобщение нечто вроде (foldr mysub body x bind), который относится mysub к каждой паре значений в x и bind.

Использование map здесь не работает, потому что вам необходимо передать «текущее» значение body через каждый вызов mysub.

Смежные вопросы