List 从方案中的列表中收集最小值和最大值范围内的元素
我是新的方案,目前没有使用(球拍版本),因此我没有像过滤器等内置功能 我现在的任务是从我输入的列表中取出元素,只取出那些高于我的MinValue和低于我的MaxValue的元素 例如,在我的“lst”变量中,我有List 从方案中的列表中收集最小值和最大值范围内的元素,list,scheme,range,remove-if,List,Scheme,Range,Remove If,我是新的方案,目前没有使用(球拍版本),因此我没有像过滤器等内置功能 我现在的任务是从我输入的列表中取出元素,只取出那些高于我的MinValue和低于我的MaxValue的元素 例如,在我的“lst”变量中,我有(2 4 1 6 5 4 7 3) 在我的“MinValue”中,我有2 在我的MaxValue中,我有5 所以现在在我应用类似的东西之后 (remove (< # minVal) lst) 但我得到了一个错误: READ from #<INPUT CONCATENATE
(2 4 1 6 5 4 7 3)
在我的“MinValue
”中,我有2
在我的MaxValue
中,我有5
所以现在在我应用类似的东西之后
(remove (< # minVal) lst)
但我得到了一个错误:
READ from #<INPUT CONCATENATED-STREAM #<INPUT STRING-INPUT-STREAM> #<IO TERMINAL-STREAM>>: objects printed as # in view of *PRINT-LEVEL* cannot be read back in
从#读取:在*打印级别*视图中打印为#的对象无法读回
主要问题:
Scheme是否有一个特定的定义变量,如#,当使用remove/remove if函数时,它会在列表中迭代,以便我可以使用它
有没有一种方法可以让它以这种方式工作:
(remove (< # minVal) lst)
(删除(<#minVal)lst)
谢谢
标签“家庭作业”应该在那里,但我还不能创建它我知道的几乎任何方案都包括一个
过滤程序,它不是特定于Racket的,你应该能够使用它(删除
不是这个工作的合适工具)
只需传递一个依次接收每个元素的lambda
,您就可以设置任何条件来确定哪些元素进入输出列表:
(filter (lambda (e) (and (>= e 2) (< e 5)))
'(2 4 1 6 5 4 7 3))
=> '(2 4 4 3)
我所知道的几乎任何方案都包括一个过滤器
过程,它不是特定于Racket的,您应该能够使用它(删除
不是这个工作的合适工具)
只需传递一个依次接收每个元素的lambda
,您就可以设置任何条件来确定哪些元素进入输出列表:
(filter (lambda (e) (and (>= e 2) (< e 5)))
'(2 4 1 6 5 4 7 3))
=> '(2 4 4 3)
你用的是哪种方案?这看起来很像Lisp错误消息。您使用的是哪种方案?这看起来很像Lisp错误消息。谢谢!这就解释了!谢谢这就解释了!
(define (filter pred lst)
(cond ((null? lst) '())
((pred (car lst))
(cons (car lst) (filter pred (cdr lst))))
(else (filter pred (cdr lst)))))