|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||
Как работает цикл do?11.05.2020, 14:55. Показов 3830. Ответов 57
Метки нет (Все метки)
Код отсюда http://lisper.ru/pcl/macros-st... constructs
0
|
||||||
| 11.05.2020, 14:55 | |
|
Ответы с готовыми решениями:
57
Цикл: как работает цикл в цикле Цикл работает неправильно, в то время как POST работает
|
|
Заблокирован
|
|
| 16.05.2020, 13:46 | |
|
Вот тебе долгий код
(loop () body) это на racker
1
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||
| 20.05.2020, 17:47 [ТС] | ||||||
|
Отсюда http://lisper.ru/pcl/macros-st... structs#DO
Вот несколько примеров цикла DO со скелетом, отмеченным фигурными скобочками вместо обычных (они используются только для демонстрационных целей – это не часть стандартного синтаксиса CL. – прим. ред.): FIXME
0
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 20.05.2020, 17:54 | |
|
Выражение состоит из четырёх частей. Внешние скобки объединяют эти четыре части в единое выражение. Обсуждали же, что скобки выполняют группирующую роль. Как вы собираетесь удалять внешние скобки, если выражение развалится?
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||
| 20.05.2020, 18:17 [ТС] | ||||||
|
Вот здесь тоже нету лишних скобок?
0
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||||||||||||
| 20.05.2020, 18:45 | ||||||||||||||||
|
do - пример выражения с индивидуальным правилом вычисления (макрос). Согласно этому правило, do имеет три части: 1) инициализация и инкремент переменных; 2) условие выхода; 3) тело. Части 1) и 2) берутся в скобки. Иначе будет путаница. И 1), и 2) могут иметь сколько угодно форм. Поэтому должен быть способ понять, какие формы относятся к возвращаемому значению, а какие - к телу. Совершенно естественно использовать скобки, чтобы сгруппировать 1) и 2) скобками и отделить их таким образом друг от друга. Эти скобки, которые требует синтаксис do, сделаны фигурными. Лучше было бы их цветом отметить, но в книге может быть неудобно.
Сравните с dotimes. Вот, вы пишете:
Но есть ли рациональное оправдание этим скобкам? Можно ли было определить его так, чтобы писать
Кроме того, даже если бы не было такой необходимости, можно было бы согласиться потратить лишнюю пару скобок, чтобы явно отделить "шапку" цикла от его тела. Общий вывод такой, что макросы могут использовать скобки для создания "разделов". Это соответствует общему принципу: пробелы разделяют, скобки группируют.
2
|
||||||||||||||||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 20.05.2020, 20:44 [ТС] | |
|
А для чего здесь dotimes% знак %?
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 20.05.2020, 21:47 | |
|
Просто прилепил такую фигню, чтобы было похоже на dotimes, но не dotimes.
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||
| 21.05.2020, 05:44 [ТС] | ||||||
|
А здесь для чего две пары скобок?
0
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 21.05.2020, 12:38 | ||
|
Вот же:
Добавлено через 18 минут В секции "выход" записывается условие выхода, потом - выражение, определяющее результат цикла. (Его можно не писать, и возвратится nil, или же их может быть несколько). Условие выхода - выражение. В вашем случае условие выхода - проверка того, что i больше или равно 4. Это обычное составное выражение, поэтому записывается списком: (>= i 4). Выражения-результата у вас нет. Значит, в разделе "выход" один элемент - тестовое выражение. Секцию выхода обрамляете скобками. Внутрь записываете выражение выхода - у него тоже есть скобки. Получается две пары скобок подряд. Внешние являются частью do, внутренние являются частью выражения-теста.
1
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||
| 21.05.2020, 14:04 [ТС] | ||||||
|
А почему здесь http://lisper.ru/pcl/macros-st... constructs
в коде звездочки приделаны? Пример:
0
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 21.05.2020, 14:30 | ||
|
Значит "любое число". Наверно, под влиянием CLHS. Там используется стандартный формат описания аргументов, похожий на регулярные выражения. Например, http://www.lispworks.com/docum... _do_do.htm
1
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 21.05.2020, 16:42 [ТС] | |
|
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 21.05.2020, 17:22 | |
|
Не понял, в каких случаях.
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||||||||
| 21.05.2020, 18:15 [ТС] | ||||||||||||
|
Ладно, тогда задам другой вопрос пока по примеру из "Мир Лиспа", страница 138.
0
|
||||||||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 21.05.2020, 18:19 | |
|
Вроде про синтаксис do уже говорили. Для этой функции приведено сверхподробное пояснение. Не знаю, чего добавить.
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 22.10.2020, 13:28 [ТС] | |
|
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||
| 22.10.2020, 14:32 | ||||||
|
Например, в стандартном ридере, кроме скобок, тоже кое-что используется. Например, для чтения строк своё особое правило, для чтения чисел - свои, для символов - свои. То есть уже на уровне стандарта абсолютной однородности нет. Стандарт признаёт, что скобки не панацея, что для определённых классов объектов могут быть полезны особые правила чтения. И что кавычка тоже полезна, хотя она ничего мудрёного не делает - разворачивается в форму. Раз так, то зачем ограничивать правила чтения? Все задачи предусмотреть невозможно, поэтому лучше дать программисту возможность настройки под его задачу и по своему вкусу.
Например, предположим, что кому-то приходится много работать со строками. Может быть, ему пригодилась бы интерполяция строк. В "обычном языке" нужно дожидаться выхода версии, поддерживающей интерполяцию. В лиспе есть библиотека: http://edicl.github.io/cl-interpol/ А в LOL https://letoverlambda.com/inde... chap4.html рассматривается перлоподобный синтаксис для регулярных выражений:
Есть вот такие проекты: https://github.com/Neronus/clesh/ в которых макросы чтения используются для более удобного вызова внешних программ. Можно быть менее радикальным и обойтись простым макросом, оборачивающим список в uiop:run-program по аналогии с кавычкой. Короче говоря, можно делать, что угодно. С одной стороны, это даёт возможность пользоваться синтаксическими удобствами, найденными в других языках или подходящими к конкретной задаче. С другой стороны, осознав свободу, можно со спокойной совестью продолжать писать скобками - не потому что по-другому нельзя, а потому что нравится.
3
|
||||||
| 22.10.2020, 14:32 | |
|
Как работает цикл? Как работает цикл for? как работает цикл while Как работает цикл Как работает этот цикл? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|