Как вернуть значение в лямбда-функции внутри andmap - PullRequest
0 голосов
/ 27 ноября 2018

Я изучаю Ракет, и я не знаю, как вернуть значение в функции внутри andmap функции:

(define iguales 0)

(andmap
    (lambda (x y)
        (cond 
          ((eq? (last x) (last y)) 
             (set! iguales (add1 iguales)))))
    casos extension)

Если я добавлю iguales в конце lambda (x y) функция, я думаю, она будет возвращать значение для каждого x и y значения.

Где находится правильное место для возврата значения в эту лямбда-функцию?

1 Ответ

0 голосов
/ 27 ноября 2018

Тело возвращает значение последней формы.

This:

(cond ((eq? (last x) (last y)) 
       (set! iguales (add1 iguales)))

возвращает либо #f, либо результат set! формы.

Для возврата iguales из лямбды в любом случае:

(lambda (x y)
  (cond ((eq? (last x) (last y)) 
         (set! iguales (add1 iguales))))
  iguales)

Форма andmap вернет либо #f, либо длину более короткого из casos и extension(видите почему?).

...