如何比较Racket中的三个参数?

时间:2016-01-27 02:36:23

标签: racket

我知道您可以使用(> 3 2)这样的东西来比较Racket中的两个参数。但三个数字集怎么样?你可以使用像

这样的东西吗?
(define smallest-of-three
  (lambda (a b c)
   (cond (and (> a b) (> a c))a)))

例如?

谢谢

2 个答案:

答案 0 :(得分:4)

如果您想找到至少三个数字,请执行以下操作:

(min a b c)

答案 1 :(得分:0)

作为一种更通用的解决方案,您可以改为使用html,如下所示:

foldl

现在我们可以做更复杂的比较,因为我们可以使用任何带有两个参数的过程,只返回其中一个。

使用更高阶函数,我们可以进一步概括:

(foldl (lambda (a b)        ;; our comparison function
         (if (< a b) a b))
       a                    ;; our initial value
       (list b c))          ;; the rest of our values