我正在学习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
感谢您的任何帮助,您可以提供。
试试这个:
(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)
,而不是这样:f(x)
。并且在cond
表达式中,每对条件/表达式都必须用包围()
。您必须小心在这些括号的位置,使用IDE的语法突出显示和格式化功能来避免此类错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句