申请:不是程序

时间:2014-12-08 19:56:15

标签: scheme racket

我正在学习Scheme。在练习期间(试图在注册表中找到特定值)。运行这段代码时,我收到错误消息:

application: not a procedure;
expected a procedure that can be applied to arguments
given: (342 "Bike" piece 250)
arguments...: [none]

有问题的代码:

(define get-post
  (lambda (post varunr)
    (define find-post
      (lambda (post)
        (cond (null? post) (display "Errormessage-For-User")
              (member varunr (car (car post)))(car post)
              (else (find-post (cdr post))))))
   find-post (post))) ;; <--- Here's the error message 

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

试试这个:

(define get-post
  (lambda (post varunr)
    (define find-post
      (lambda (post)
        (cond ((null? post) (display "Errormessage-For-User"))
              ((member varunr (car (car post))) (car post))
              (else (find-post (cdr post))))))
    (find-post post)))

请记住:在Scheme函数中,这样调用:(f x) not ,如下所示:f(x)。在cond表达式中,每对条件/表达式必须()包围。在放置这些括号时必须小心,使用IDE的语法高亮和格式化功能来避免这些错误。