racket - 删除列表中小于 10 的数字的函数
问题描述
我需要创建一个函数,它接受一个数字列表并删除所有小于 10 的数字并输出一个新列表。
到目前为止,我有这个:
#lang racket
(define less-than10(lambda (x)
(for/list ([i x] #:when (lambda (x) (< x 10))) i)))
(less-than10 '(1 2 3 4 11))
但是,它仍然不会删除小于 10 的数字。它只是输出完全相同的列表。有什么帮助吗?
解决方案
您需要将谓词应用于绑定循环变量i
,还要注意我已经翻转了谓词:
#lang racket
(define less-than10
(lambda (x)
(for/list ([i x] #:when ((lambda (x) (> x 10)) i)) i)))
(less-than10 '(1 2 3 4 11))
; => '(11)
更自然的版本将使用filter
:
(define less-than10.v2
(lambda (x)
(filter (lambda (x) (> x 10)) x)))
(less-than10.v2 '(1 2 3 4 11))
; => '(11)
推荐阅读
- android - 如何在导入的 jar 中使用类?
- javascript - Fullcalendar 通过点击月份时间周等获取当前视图
- python - AWS Lambda 导入模块失败
- spring-boot - 使用reactivemongodb查询mongodb集合SpringWebFlux
- django - 如何将 keycloak 与 django 和 angular 集成
- r - 如何调试 FactoInvestigate 错误:无法打开连接
- python-3.x - 使用 np.append() 在数组中形成数组
- c# - 时间:2019-04-01 标签:c#keep running application without run
- python - 如何检查熊猫数据框中是否存在特定条目并添加新条目?
- c# - 如何在 C# 代码中为 POST 方法创建精确的 JSON 格式?