Scheme 如何在andmap内的lambda函数中返回值

Scheme 如何在andmap内的lambda函数中返回值,scheme,lisp,racket,Scheme,Lisp,Racket,我正在学习Racket,我不知道如何在和map函数中返回值: (define iguales 0) (andmap (lambda (x y) (cond ((eq? (last x) (last y)) (set! iguales (add1 iguales))))) casos extension) 如果我在lambda(xy)函数的末尾添加iguales,我认为它将为每个x和y值返回一个值 将返回值放入l

我正在学习Racket,我不知道如何在
和map
函数中返回值:

(define iguales 0)

(andmap
    (lambda (x y)
        (cond 
          ((eq? (last x) (last y)) 
             (set! iguales (add1 iguales)))))
    casos extension)
如果我在
lambda(xy)
函数的末尾添加
iguales
,我认为它将为每个
x
y
值返回一个值


将返回值放入lambda函数的正确位置在哪里?

主体返回最后一个表单的值

这:

返回
#f
集合的结果表单

在任何情况下,要从lambda返回
iguales

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

然后,
和map
表单将返回
#f
casos
扩展名
中较短者的长度(请参见原因)。

主体返回最后一个表单的值

这:

返回
#f
集合的结果表单

在任何情况下,要从lambda返回
iguales

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

然后,
和map
表单将返回
#f
casos
扩展名
中较短者的长度(请参见原因)。

谢谢您的回答。我使用了
和map
,但我可以使用
ormap
。还有其他球拍的功能来做我所做的吗?再次感谢。那么,你想做什么呢?
和map
以及
ormap
做非常不同的事情!你不能互换使用它们,你想做什么?此外,您的代码是必需的,也许您需要为每个
使用一个
。。。或者完全用函数的方式重写它,避免设置
set
在(大多数)方案代码中似乎不合适。我想比较
casos
extension
列表中的所有元素,并计算其中哪些元素与最后一个元素相等
casos
extension
是列表列表。请查看fold()的文档,注意您可以提供多个列表。感谢您的回答。我使用了
和map
,但我可以使用
ormap
。还有其他球拍的功能来做我所做的吗?再次感谢。那么,你想做什么呢?
和map
以及
ormap
做非常不同的事情!你不能互换使用它们,你想做什么?此外,您的代码是必需的,也许您需要为每个
使用一个
。。。或者完全用函数的方式重写它,避免设置
set
在(大多数)方案代码中似乎不合适。我想比较
casos
extension
列表中的所有元素,并计算其中哪些元素与最后一个元素相等
casos
extension
是列表列表。请查看fold()的文档,注意您可以提供多个列表。