将程序的一部分作为Racket中的数据处理

将程序的一部分作为Racket中的数据处理,racket,Racket,我必须说,我真的不知道如何称呼我正在寻找的东西,所以也许标题不是那么准确 我有一个程序,可以绘制一些点。generate list函数生成一个包含n(x,y)个坐标的列表,get points生成另一个列表,该列表的每个x(从(x,y))可被n整除。 我肯定可以调用points多少次,但我正试图通过只编写一次points函数来减少过程) Bellow是一个没有产生任何有用信息的示例,但我正在寻找以类似方式简化代码的方法 (plot (list (axes 0 0) (

我必须说,我真的不知道如何称呼我正在寻找的东西,所以也许标题不是那么准确

我有一个程序,可以绘制一些点。
generate list
函数生成一个包含n(x,y)个坐标的列表,
get points
生成另一个列表,该列表的每个x(从(x,y))可被n整除。
我肯定可以调用
points
多少次,但我正试图通过只编写一次
points
函数来减少过程)

Bellow是一个没有产生任何有用信息的示例,但我正在寻找以类似方式简化代码的方法

(plot (list
       (axes 0 0)
       (for ([i (in-range 2 5)])
         (points (get-points (generate-list 1000) i)
                 #:color i))))
当然,任何只编写一次
points
函数的替代方法都会有很大帮助。

尝试以下方法:

循环丢弃主体表达式在每次迭代中生成的值,同时循环将它们放入列表中,并返回列表,以便将所有点都包含在到的输入中


(顺便说一句,这个嵌套列表是可以的,因为它允许一个
渲染器树作为输入。)

尝试
for/list
而不是
for
哦,有很多版本的for循环。谢谢你!如果你不介意后续问题,你能帮我一点忙吗?我写了一些东西,生成了我想要绘制的内容的等效版本,但是我不知道如何将引用转化为列表或其他内容,以便将其绘制为
(plot-to-plot)
。下面是代码:
(定义到绘图(轴0))(用于([i(范围2-5)])(设置!到绘图(附加到绘图上)(点(获取点(生成列表100)(unquote i))):颜色(unquote i)))))
我建议您在创建列表时不要使用
quote。使用诸如
list
append
for/list
map
filter
等都是基于表达式的,而不像
引用是基于数据的
(plot (list
       (axes 0 0)
       (for ([i (in-range 2 5)])
         (points (get-points (generate-list 1000) i)
                 #:color i))))
(plot (list
       (axes 0 0)
       (for/list ([i (in-range 2 5)])
         (points (get-points (generate-list 1000) i)
                 #:color i))))