Functional programming 球拍-如何为列表指定长度

Functional programming 球拍-如何为列表指定长度,functional-programming,racket,Functional Programming,Racket,我在想,在《球拍》中,你如何给一张名单指定一个特定的长度 这是我想要运行的代码: (check-expect (length a-list-of-length-104) 104) (define (random-element a-list) (list-ref a-list (random (length a-list)))) (random-element a-list-of-length-104) (random-element a-list-of-length-104) (rando

我在想,在《球拍》中,你如何给一张名单指定一个特定的长度

这是我想要运行的代码:

(check-expect (length a-list-of-length-104) 104)
(define (random-element a-list)
(list-ref a-list (random (length a-list))))

(random-element a-list-of-length-104)
(random-element a-list-of-length-104)
(random-element a-list-of-length-104)
在不向列表中实际输入104个元素的情况下,您将如何进行此操作

这是我的最终目标:

(check-expect (length a-list-of-length-104) 104)
(define (random-element a-list)
(list-ref a-list (random (length a-list))))

(random-element a-list-of-length-104)
(random-element a-list-of-length-104)
(random-element a-list-of-length-104)

每次都应该产生不同的输出。

列表的长度是它包含的元素数。因此,您不能“为列表指定长度”

但是,您可以更方便地创建包含一定数量元素的列表。假设
#lang racket
,您可以使用

要构建由0到103之间的整数组成的列表,请执行以下操作:

(build-list 104 values)
要建立一个由104个随机
实数
数字组成的列表:

(build-list 104 (lambda _ (random)))

啊,好吧,我从来都不知道这个函数,但是“值”不起作用,它总是给出一个错误,说变量“值”没有定义。@Theo听起来你在用一种教学语言工作,而不是Racket。教学语言比全套语言更具限制性。格雷格的解决方案在常规球拍中可以很好地工作。@AlexisKing ahh好的,是的,我在使用球拍的教学语言。如果
构建列表
是教学语言,请将第一个示例更改为
(构建列表104(lambda(n)n))
。这就是所有的
在这里真正做的——充当标识函数。[如果
lambda
不是学生语言,我就放弃。:P]