在此示例中将lambda作为参数传递

时间:2013-02-06 00:29:48

标签: scheme

以下过程random-choice包含一个名为choice的过程:

(define (random-choice strategy-1 strategy-2) 
 (choice strategy-1
 strategy-2
 (lambda (ship-state) (= (random 2) 0))))

如何创建随机选择两种策略的程序选择? 你还能解释一下lambda如何作为一个参数从过程传递到过程吗?

1 个答案:

答案 0 :(得分:1)

以下是两个可能值之间随机选择值的示例:

(define (choice s1 s2)
  (if (zero? (random 2)) s1 s2))

该过程返回随机选择的值,由您决定如何使用它。并且lambda可以作为任何其他值的参数传递,它没有任何不同之处。例如:

((choice (lambda (x) (first x))
         (lambda (x) (last  x)))
 '(1 2 3 4 5))

以上将在选择列表中的第一个或最后一个元素的策略之间随机选择,然后将选择应用于列表。多次运行,您会看到有时会返回1,有时会返回5