drracket 函数调用:在左括号后需要一个函数,但收到 14

drracket function call: expected a function after the open parenthesis, but received 14

嘿,我对我的代码感到非常沮丧。我一直在尝试实现一个代码,该代码通过结构列表进行过滤,并过滤掉与另一个结构具有不同 ID 的任何结构。

不幸的是,我不知道该怎么办了。我总是收到的唯一错误消息是:

函数调用:在左括号后需要一个函数,但收到了 14

这是我的代码:

(define (make-filter lst trlst)
     
  (filter (lambda(x) (equal? (route-section-id lst) (traffic-jam-section-id x))) trlst))
                          
(define it
  (list
   (make-traffic-jam 14 7)
   (make-traffic-jam 14 7 )
   (make-traffic-jam 14 7)))
(define some-items
  (list
   (make-route-section (14 "highway" 18 19))))

(check-expect (make-filter (some-items) (it))0)

Scheme(和大多数 Lisp)假定紧跟在左括号之后的符号表示要执行的函数。错误消息告诉您解释器在那个位置找到了一个数字而不是函数的名称。

在您的代码中,过程 some-items 有一个表达式 (14 "highway" 18 19),其中需要一个函数名称。这就是错误的来源。

如果函数 make-route-section 需要四个单独的参数,只需删除有问题的表达式两边的括号。如果 make-route-section 需要参数列表,请使用 (list 14 "highway" 18 19)。在这种情况下,list 是构建函数的名称,returns 是列表。