如何使用过程的n个应用程序创建列表

时间:2019-01-03 14:14:49

标签: list racket

我的问题与this one有关,但在我的情况下,我想获取一个包含n个应用程序的结果的列表,该应用程序的输出不能与先前的结果再次计算(从a中随机选择一个元素)列表)。

也就是说,函数n本身不是n次组成函数,而是将n个结果一起显示在列表中。

2 个答案:

答案 0 :(得分:2)

像这样吗?

#!racket/base
(require srfi/1)

(define (times/list proc n)
  (unfold-right zero? proc sub1 n))

(times/list (lambda (v) (abs (- v 5))) 10)
; ==> (4 3 2 1 0 1 2 3 4 5)

(times/list (lambda _ 5) 10)
; ==> (5 5 5 5 5 5 5 5 5 5)

(times/list (lambda _ (+ 1 (random 5))) 10)
; ==> (4 2 2 4 4 1 5 3 1 3) (varies)

答案 1 :(得分:1)

您可以像这样使用for/list

(define (times/list proc n)
  (for/list ([i n]) (proc)))

使用它:

> (times/list (λ () (random 5)) 10)
'(3 4 3 3 0 0 4 0 2 1)