множественные выражения после ошибки идентификатора - PullRequest
0 голосов
/ 25 февраля 2012

Вот код:

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

Почему это вызывает ошибку?

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

Вы неправильно использовали ключевое слово 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

)))
0 голосов
/ 27 февраля 2012

Примечание: когда вы говорите «Может кто-нибудь помочь мне с этой ошибкой», укажите, какое сообщение об ошибке вы видите. Вся ваша программа не может быть ошибкой сама по себе. Но он может содержать ошибок, и при попытке запустить его может выдавать сообщения об ошибках.

Я предполагаю, что вы видели сообщения об ошибках. Включите их тоже, в следующий раз. Также скажите нам, что вы ожидали увидеть. Вы ожидали получить ошибку, которую видите?

Причина, по которой вы должны включить фактическое сообщение об ошибке, заключается в том, что проблема, с которой вы сталкиваетесь, может даже не иметь никакого отношения к тому, что вы считаете проблемой. В этом случае сообщение об ошибке позволяет нам убедиться, что мы на правильном пути в решении вашей проблемы.


Глядя на вашу программу, я думаю, что она синтаксически неполна. A let должен иметь по крайней мере body, иначе он не грамматичен в соответствии с правилами языка. Там нет тела, присутствующего в:

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

(Аналогичное сообщение об ошибке на языке, подобном C, может появиться, если вы попытаетесь использовать оператор if, но не включите тест.)

По крайней мере, вы можете включить какой-то заполнитель, пока не выясните, что вам действительно нужно вставить туда. Например:

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

должен, по крайней мере, сделать программу синтаксически приемлемой. Хотя это пока не поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...