List 在DrRacket中,如何制作列表

List 在DrRacket中,如何制作列表,list,lambda,racket,List,Lambda,Racket,基本上,我所要做的就是在DrRacket“中级学生与Lamda”中列出一个列表,但我不确定如何处理这个问题 我还是一个使用Racket的新手,所以我至少知道我必须使用lambda才能创建列表列表,至少这是我知道的一种方法,但我仍然不知道该怎么做 我想做一个函数,当你输入 (list(list 1 2 3)(list 3 4 5)(list 6 7 8))它将计算一些东西 我需要知道这一点,这样我才能解决我目前正在研究的一个问题,这就是这个问题: 编写一个函数(keep counts L thre

基本上,我所要做的就是在DrRacket“中级学生与Lamda”中列出一个列表,但我不确定如何处理这个问题

我还是一个使用Racket的新手,所以我至少知道我必须使用lambda才能创建列表列表,至少这是我知道的一种方法,但我仍然不知道该怎么做

我想做一个函数,当你输入

(list(list 1 2 3)(list 3 4 5)(list 6 7 8))
它将计算一些东西

我需要知道这一点,这样我才能解决我目前正在研究的一个问题,这就是这个问题:

编写一个函数(keep counts L threshold mincount),其中L是一个 (listof(listof Num)),其他参数都是Num

此函数返回一个包含L中所有值的列表,其中 至少包含大于阈值的mincount值

例如:

(keep-counts (list (list 1 1 2 5) (list 1 4 4 1) (list 6 6 4 7)) 2 2) => 
(list (list 1 4 4 1) (list 6 6 4 7))

这是因为只有这两个列表包含至少两个大于2的值。

解决方案可以用高阶程序表示:

(define (keep-counts lst mincount threshold)
  (filter (λ (sl)
            (>= (count (λ (e) (> e mincount))
                       sl)
                threshold))
          lst))
上述代码状态:过滤大于
mincount
的元素数高于给定
阈值的所有子列表。解决方案本身就是这样写的

(keep-counts (list (list 1 1 2 5) (list 1 4 4 1) (list 6 6 4 7)) 2 2)
=> '((1 4 4 1) (6 6 4 7))

(列表(列表1 2 3)(列表3 4 5)(列表6 7 8))
已经是一个列表列表。我不知道你的问题是什么。“计算某物”是非常模糊的。请编辑您的问题,以更具体地说明您遇到的问题,并查看您是否不确定如何做。好的,我将编辑问题,我正在尝试知道如何制作一个函数,使我能够制作列表,有必要回答我正在处理的问题。那我就把问题贴出来,这样我的问题就可以更好地理解了。好的,我已经编辑了这个问题。“我必须使用lambda才能创建列表列表”-为什么?Lambda创建的是一个函数,而不是一个列表。你说“刚刚失败”是什么意思<代码>(列表(列表1 2 3)(列表3 4 5)(列表6 7 8))
是有效代码,它创建列表列表。你还想要什么?“手动编写列表如何帮助我解决我试图解决的问题”-事实并非如此。但你所问的只是“如何制作列表”。有没有办法改变代码,在代码中使用的不是计数,而是长度。我目前正在尝试这样做。我不知道count之前在Racket中做了什么,所以我使用docs.Racket-lang.org并提出了(>=length(filter lambda(t)(>t mincount))(map s)),而不是(>=(count(lambda(t)(>t mincount))不幸的是,我不能使用count和filter映射,因此基于这些函数的定义,我提出了这段代码。虽然它不起作用,但这是我所期望的,所以我很好奇如何使用length、filter和map函数编写count函数。count只是(length(filter…)在同一个列表上使用相同的谓词实际上是nevermind,我解决了我的错误。Map在那段代码中是不必要的。我只需要添加筛选器和长度。(编辑)我在回答我的问题时写了这篇文章,谢谢。