Andmap\ormap - chez 方案

Posted

技术标签:

【中文标题】Andmap\\ormap - chez 方案【英文标题】:Andmap\ormap - chez schemeAndmap\ormap - chez 方案 【发布时间】:2012-01-04 02:34:21 【问题描述】:

我试图在 chez 方案中查找有关 andmap 和 ormap 操作的信息。

还是不明白这些操作的用途,和map有什么区别。

【问题讨论】:

所有这些功能都在 Chez Scheme 用户指南中有详细记录。 【参考方案1】:

在伪方案中,

(andmap f xs)  ==  (fold and #t (map f xs))
(ormap  f xs)  ==  (fold or  #f (map f xs))

除了:

    你不能这样使用andorandmapormap 可以对列表进行短路处理。

也就是说,除了短路行为略有不同,

(andmap f (list x1 x2 x3 ...))  ==  (and (f x1) (f x2) (f x3) ...)
(ormap  f (list x1 x2 x3 ...))  ==  (or  (f x1) (f x2) (f x3) ...)

【讨论】:

【参考方案2】:
Petite Chez Scheme Version 8.3
Copyright (c) 1985-2011 Cadence Research Systems

> (define (andmap f xs)
    (cond ((null? xs) #t)
          ((f (car xs))
            (andmap f (cdr xs)))
          (else #f)))
> (define (ormap f xs)
    (cond ((null? xs) #f)
          ((f (car xs)) #t)
          (else (ormap f (cdr xs)))))
> (andmap even? '(2 4 6 8 10))
#t
> (andmap even? '(2 4 5 6 8))
#f
> (ormap odd? '(2 4 6 8 10))
#f
> (ormap odd? '(2 4 5 6 8))
#t

【讨论】:

【参考方案3】:

由实用方案网提供:

(ormap procedure list1 list2 ...)

procedure依次应用于列表的相应元素,直到列表用完或过程返回真值。

(andmap procedure list1 list2 ...)

procedure依次应用于列表的相应元素,直到列表用完或过程返回错误值。

http://practical-scheme.net/wiliki/schemexref.cgi/ormap

认为这值得放在这里,因为这个 *** 问题是 Google 上的第一个结果。

【讨论】:

以上是关于Andmap\ormap - chez 方案的主要内容,如果未能解决你的问题,请参考以下文章

如何在 chez 方案中加载 slib 库?

如何使用 chez 方案获得给定列表中所有元素的总和 >10?

在 64 位 Arm 上编译和安装 Chez 方案?

如何在 Chez-Scheme 中读取一行输入?

欧几里得算法解决 RR' - NN' = 1. 使用蒙哥马利算法进行模幂运算以在 python 或 Petite Chez 方案中实现费马检验

petite chez 计划的清除屏幕