символ файлового потока заканчивается объектом - PullRequest
1 голос
/ 02 мая 2019

Я новичок в Лиспе, только что делал некоторые уроки раньше. На этот раз я пытаюсь создать свой собственный код. Я хочу напечатать все нечетные числа от 1 до 20.

Я пытался сдвинуть скобки и синтаксические вещи, как это. Это мой код:

(loop for x from 1 to 20

   (cond

   ((/= 0 (mod x 2))

   )

   do (print x)

)

И в результате я получаю:

*** - READ: input stream
      #<INPUT BUFFERED FILE-STREAM CHARACTER #P"main.lisp" @7> ends within an
      object. Last opening parenthesis probably in line 1.

Кто-нибудь может мне помочь?

1 Ответ

3 голосов
/ 02 мая 2019

Есть кто-нибудь, кто может мне помочь?

Конечно, вам просто нужно сбалансировать свой код или посчитать скобки, чтобы увидеть ошибку:

(loop for x from 1 to 20

   (cond

   ((/= 0 (mod x 2))

   )

   do (print x)

)

Выше есть 6 открывающих и 5 закрывающих скобок ...

Вам необходимо проверить синтаксис:

  • несбалансированные скобки
  • недопустимый синтаксис LOOP

Вот буклет с обзором синтаксиса Common Lisp: Краткий справочник по Common Lisp

Кроме того: ручная установка кода на Lisp не будет работать: для этого используйте редактор.

CL-USER 6 > (loop for x from 1 to 20
                  do (when (/= 0 (mod x 2))
                       (print x)))

1 
3 
5 
7 
9 
11 
13 
15 
17 
19 
NIL
...