Andmap \ ormap - chez scheme

时间:2011-11-22 17:55:05

标签: scheme chez-scheme

我试图找到有关andmap&的信息。 chez方案中的ormap操作。

但是,我不明白这些操作的使用,它与地图有什么区别。

3 个答案:

答案 0 :(得分:3)

在伪方案中,

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

除了:

  1. 您不能以这种方式使用andor
  2. andmapormap可以对列表进行短路处理。
  3. 即,除了略有不同的短路行为外,

    (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) ...)
    

答案 1 :(得分:1)

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

答案 2 :(得分:0)

courtesy of Practical-scheme.net:

(ormap procedure list1 list2 ...)

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

(andmap procedure list1 list2 ...)

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

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

认为这值得一提,因为这个StackOverflow问题是Google的第一个结果。