Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List “如何使用内置列表功能”;“过滤器”;_List_Filter_Scheme - Fatal编程技术网

List “如何使用内置列表功能”;“过滤器”;

List “如何使用内置列表功能”;“过滤器”;,list,filter,scheme,List,Filter,Scheme,请帮助我使用DrScheme内置函数“filter” 创建一个函数“hello”,该函数使用一个数字“Max”,并创建一个数字列表“L”,生成一个小于“Max”的数字列表 编辑摘自用于格式化的注释 这就是我目前所拥有的 (define (smaller? n Max) (cond [(> Max n) n] [else empty])) (define (hello Max L) (filter smaller? L)) 我不知道如何在函数hello中实

请帮助我使用DrScheme内置函数“filter”

创建一个函数“hello”,该函数使用一个数字“Max”,并创建一个数字列表“L”,生成一个小于“Max”的数字列表

编辑摘自用于格式化的注释

这就是我目前所拥有的

(define (smaller? n Max) 
  (cond 
    [(> Max n) n] 
    [else empty])) 
(define (hello Max L) 
  (filter smaller? L))

我不知道如何在函数hello中实现Max。

提示:您可以使用
lambda
创建匿名函数:

(lambda (x) (have-fun-with x))

编辑:另一个提示:
(>Max n)
已返回布尔值,您不需要封闭的
cond
结构。

提示:您可以使用
lambda
创建匿名函数:

(lambda (x) (have-fun-with x))

编辑:另一个提示:
(>Max n)
已经返回了一个布尔值,您不需要一个封闭的
cond
结构。

使用您的
较小的定义,我会选择类似

(define (hello Max L)
  (filter (lambda (n) (smaller? n Max)) L))

这使用一个lambda函数,它是hello函数的Max参数的闭包。因此,它“嵌入”
Max
在用于过滤的lambda函数中。

使用您的
较小的定义,我会选择类似

(define (hello Max L)
  (filter (lambda (n) (smaller? n Max)) L))


这使用一个lambda函数,它是hello函数的Max参数的闭包。因此,它在用于过滤的lambda函数中“嵌入”
Max

为什么不告诉我们到目前为止您做了什么,以及您遇到了什么困难?这就是我到目前为止所做的(定义(较小的?n Max)(cond[(>Max n)n][否则为空])(定义(hello Max L)(过滤器较小的?L))我不知道如何在函数hello中实现Max(qrsvar(uryyb znk y)(svygre(ynzoqn(k)(>znk))y)):-PTo帮你回答一下,你了解闭包了吗?如果不使用闭包,这个问题实际上是无法解决的。你不需要闭包来解决这个问题。为什么不告诉我们你到目前为止做了什么,以及你遇到了什么困难?这就是我到目前为止所做的(定义(更小的?n Max)(cond[(>Max n)n][else empty])(定义(hello Max L)(筛选更小的?L))我不知道如何在函数hello中实现Max(qrsvar(uryyb znk y)(svygre(ynzoqn(k)(>znk))y)):-PTo帮你回答一下,你了解闭包了吗?如果不使用闭包,这个问题实际上是无法解决的。你不需要闭包来解决这个问题。我的问题是,我不确定如果不在lambdaor中使用Max,我如何解决这个问题。相反,过滤器中的谓词只消耗一件事,但我有两件事,“Max”和“L”,所以如果在函数中使用lambda,我不知道如何解决这个问题,它可以看到该函数作用域中的所有内容。@Ben:您可以使用闭包来解决这个问题。例如:(lambda(foo)(lambda(bar)(+foo-bar)))。内部lambda可以访问外部lambda中的“foo”。希望有帮助!谢谢你们,你们关于闭包的讨论真的很有帮助,我仔细研究了一下,发现了应该做什么。我的问题是,我不确定如果不在lambdaor中使用Max,我怎么做。相反,过滤器中的谓词只消耗一件事,但我有两件事,‘Max’和‘L’,因此,我不知道如何解决这个问题。如果在函数中使用lambda,它会看到该函数作用域中的所有内容。@Ben:您可以使用闭包解决这个问题。例如:(lambda(foo)(lambda(bar)(+foo-bar)))。内部lambda可以访问外部lambda中的“foo”。希望有帮助!谢谢你们,你们关于结束的讨论真的很有帮助,我调查了一下,发现了该做什么感谢你们同意我关于什么是结束的看法。:-)当然,
sleer?
函数是完全多余的。这就是我最终得到的结果(定义(hello Max L)(过滤器(sleer Max)L))(定义(sleer Max)(lambda(n)(minger?
函数是完全多余的。这就是我最终得到的结果(定义(hello Max L)(过滤器(较小的Max)L))(定义(较小的Max)(lambda(n)(