LINUX.ORG.RU

вопросы по стилю

 


0

2

1. как переписать (цикл (цикл (цикл (цикл ... return-from ...))))

2. *глобальная-переменная*

а как назвать локальную? как для цикла?

3. надо ли defvar или let для счетчиков цикла?

4. как sbcl или clisp проверить исходник (вроде lint)?

5. в паскале так «Hello, world!»#10, в си «Hello, world!\n», а в common lisp? надо не для вывода, а именно в строке.



Последнее исправление: glazfywgyvwu (всего исправлений: 1)

1. как переписать (цикл (цикл (цикл (цикл ... return-from ...))))

А зачем?

а как назвать локальную? как для цикла?

a первый счётчик,b вложенный счётчик,m ограничитель цикла,r временное хранилище результата,l длинна чего либо.

PeKar
()

как переписать (цикл (цикл (цикл (цикл ... return-from ...))))

Обычно делается один цикл. Типа

(iterate
  (for ....)
  (for ....)
  (for ....)
  (when ... (leave result)))

2. Без звёздочек.

3. Нет

4. Компилятор может только скомпилировать. То есть запускаешь sbcl или clisp и выполняешь (compile-file «твоя-программа.lisp»). Смотришь ошибки компиляции.

5. (format nil «Hello, world!~%»)

monk ★★★★★
()

как переписать (цикл (цикл (цикл (цикл ... return-from ...))))

Попробуй хвостовой рекурсией, ради развлечения.

a первый счётчик,b вложенный счётчик,m ограничитель цикла

Как же я люблю, когда у людей буквы платные)

nihirash ★★★
()

Если прочитать учебник, хотя бы PCL, большая часть вопросов отпадет.

anonymous
()

1. как переписать (цикл (цикл (цикл (цикл ... return-from ...))))

Можешь на функции разбить.

а как назвать локальную? как для цикла?

Обычное имя.

3. надо ли defvar или let для счетчиков цикла?

(loop with n = 0 ... do ... (incf n))

5. в паскале так «Hello, world!»#10, в си «Hello, world!\n», а в common lisp?

(format nil "Hello, World!~%")

или прямо в строке делаешь перевод строки:

"Hello, World! "

anonymous
()
Ответ на: комментарий от monk

Обычно делается один цикл. Типа

Эти for вообще-то одновременно выполняются.

anonymous
()
(block out-her
    (do ((a 1 (1+ a))) ((= a 999))
      (do ((b a (1+ b))) ((= b 999))
        (do .......
            (if условие)
                 (return-from out-her))
Eva
()

1. как переписать (цикл (цикл (цикл (цикл ... return-from ...))))

Разбить на отдельные функции?

2. *глобальная-переменная*
а как назвать локальную? как для цикла?

Без астерисков?

3. надо ли defvar или let для счетчиков цикла?

OMG

4. как sbcl или clisp проверить исходник (вроде lint)?

OMG

5. в паскале так «Hello, world!»#10, в си «Hello, world!\n», а в common lisp? надо не для вывода, а именно в строке.

OMG

awesomelackware
()
Ответ на: комментарий от nihirash

Попробуй хвостовой рекурсией, ради развлечения.

Ради развлечения надо в CPS переписать.

anonymous
()
Ответ на: комментарий от awesomelackware

Practical Common Lisp
Practical
Common Lisp

/0

anonymous
()
Ответ на: комментарий от witaway

Так вроде счётчики циклов в простых программах обычно именуют i и j.. Нет?

Дело привычки. Когда в функции всего пару циклов, a и b вполне хорошие именования. i обычно использую do loop циклах, а j в качестве строковой переменной к которой понадобится применять преобразование.

PeKar
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.