Scheme 如何控制谓词是否在命令提示符中给出?

Scheme 如何控制谓词是否在命令提示符中给出?,scheme,Scheme,如果谓词返回true,我将尝试在列表中执行一些操作。但谓词是在命令行中作为输入提供的,它是一个函数。让我举个例子 (define (delete-rows table predicate) do_something) 命令行如下所示 (delete-rows student-table (lambda (table row) (eq? (get table row 'name) 'ali))) => '(students (name id gpa) (ay

如果谓词返回true,我将尝试在列表中执行一些操作。但谓词是在命令行中作为输入提供的,它是一个函数。让我举个例子

(define (delete-rows table predicate)
    do_something)
命令行如下所示

(delete-rows student-table
    (lambda (table row)
        (eq? (get table row 'name) 'ali)))
=> '(students (name id gpa) (ayse 2 3.7))

提前谢谢你的帮助

以下是Racket中一个非常幼稚和低效的实现,只是为了让您走上正确的轨道:

(定义(列表索引e lst)
((长度lst)(长度(memq e lst)))
(定义(获取表格行列列)
(列表参考行(列表索引列(第二个表)))
(定义(删除表pred中的行)
(列表*(第一表)
(第二张表)
(过滤器(λ(r)(非(pred表r)))(cddr表)))
然后

(定义学生表’(学生(姓名id gpa)(ali 12)(ayse 23.7)(zalde 35)))
(删除学生表中的行(lambda(表行)(eq?(获取表行'name')ali)))
=>'(学生(姓名id gpa)(ayse 2 3.7)(zalde 3 5))

您必须使用
read
eval
将其从文本转换为数据再转换为代码。