List 从方案中的列表中收集最小值和最大值范围内的元素

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

我是新的方案,目前没有使用(球拍版本),因此我没有像过滤器等内置功能

我现在的任务是从我输入的列表中取出元素,只取出那些高于我的MinValue和低于我的MaxValue的元素

例如,在我的“lst”变量中,我有
(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)))))