标识符错误后的多个表达式

时间:2012-02-25 06:45:32

标签: scheme

以下是代码:

(define path (lambda lst start end)
  (let ((nodes (car lst))
        (edges (cdr lst)))))

为什么会导致错误?

2 个答案:

答案 0 :(得分:2)

您误用了lambda关键字,而且功能正文尚未完成。

(define path (lambda (lst start end)
      (let ((nodes (car lst))
            (edges (cdr lst)))
        ; here should be expression, i think with lst, nodes and edges

)))

答案 1 :(得分:0)

注意:当您说“任何人都可以帮助我解决此错误”时,请包含您看到的错误消息。你的整个程序本身不是一个错误。但它可能包含错误,当您尝试运行它时,它可能会产生错误消息。

我假设您看到了错误消息。下次还包括那些。还告诉我们您期望看到的内容。您是否期望得到您所看到的错误?

您应该包含实际错误消息的原因是因为您看到的问题可能与您认为的问题无关。在这种情况下,错误消息使我们能够确保我们在解决您的问题时走上正轨。


看看你的程序,我认为它在语法上是不完整的。 let需要至少有一个body,否则根据语言规则不合语法。在:

中没有身体存在
 (let ((nodes (car lst))
       (edges (cdr lst)))
    )

(如果您尝试使用if语句但未包含测试,则会出现类似C语言的类似错误消息。)

至少,你可以包含某种占位符,直到你弄清楚你真正需要放在哪里。例如:

 (let ((nodes (car lst))
       (edges (cdr lst)))
   "fixme")

至少应该使程序成为语法上可接受的程序。虽然它不会做任何有用的事情。