基本上,我想做的只是在DrRacket“具有Lamda的中级学生”中列出列表,但是我不确定该如何处理。
我仍然是使用Racket的新手,所以至少我了解我必须使用lambda才能创建列表列表,至少这是我所知道的一种方法,但我仍然不知道该怎么办。
我想创建一个函数,当您键入
(list (list 1 2 3) (list 3 4 5) (list 6 7 8))
它会计算出一些东西。
我需要知道这一点,以便我可以解决当前正在处理的问题:
编写一个函数(保持计数L阈值mincount),其中L是一个 (listof(listof Num)),其他参数均为Num。
此函数返回包含L中所有值的列表 至少包含至少大于阈值的最小计数值。
示例:
(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的值。
答案 0 :(得分:1)
解决方案可以用高阶过程来表示:
(define (keep-counts lst mincount threshold)
(filter (λ (sl)
(>= (count (λ (e) (> e mincount))
sl)
threshold))
lst))
上面的代码指出:过滤所有大于mincount
的元素数大于给定threshold
的子列表。解决方案按字面意思写!
(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))