抽象函数-Racket博士

抽象函数-Racket博士,racket,Racket,开发谓词a-student?,如果学生的gpa高于3.7,则返回true,并使用它来 开发函数a-students?,该函数使用学生列表,并生成所有学生的列表 gpa在3.7以上的学生。使用过滤器。如提示所示-在a-students函数中使用: (filter (lambda (student) (a-student? (student-GPA student))) list-of-students) 我能做第一部分并开发谓词a-student我只是在找出如

开发谓词
a-student?
,如果学生的gpa高于3.7,则返回
true
,并使用它来 开发函数
a-students?
,该函数使用学生列表,并生成所有学生的列表 gpa在3.7以上的学生。使用过滤器。

如提示所示-在
a-students
函数中使用:

(filter (lambda (student)
          (a-student? (student-GPA student)))
        list-of-students)

我能做第一部分并开发谓词a-student我只是在找出如何将其合并到函数a-students中时遇到问题。在我们帮助您之前,我们需要一些关于您如何尝试解决问题的信息。我甚至不知道这个问题是什么。我的谓词是(check expect(a-student?3.8)true)(check expect(a-student?2.7)false)(define(a-student?student GPA)(cond[(>student GPA 3.7)true)[(我试着用check expect(a-students(list S1 S2))S1)(define(a-students los)(filter a-student?los))解决它)但是收到错误消息>:在收到错误消息之前需要一个实数作为第一个参数>(使学生“Tim”1234 3.8)。S1和S2以前被定义为(定义S1(使学生“Tim”1234 3.8))(定义S2(使学生“Bob”1236 2.7))。当我在收到错误消息之前尝试这样做时>:需要一个实数作为第一个参数,给定(使学生这是因为我的谓词是(check expect(a-student?3.8)true)(check expect(a-student?2.7)false)(define(a-student?student GPA)(cond[(>student GPA 3.7)true][(我只是对如何修复此错误消息感到困惑。@AArce我用一个可能的解决方案更新了我的答案,问题是您的
a-student?
过程接收的是GPA作为参数,而不是学生。您可以在
a-students
函数中提取GPA(如上所述)或者在
a-student?
谓词中,但无论哪种方式,都必须在某个地方提取GPA(我猜这样做的过程称为
student GPA