我正在学习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
感谢您提供的任何帮助。
答案 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的语法高亮和格式化功能来避免这些错误。