Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334

[Забавное: Проклятый Common Lisp

06.11.2019, 18:19. Показов 4146. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
http://www.stolyarov.info/node/262
К сожалению этот вариант видимо уйдет в печать
Желающие могут поспорить на тему чистоты архитектуры))
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2019, 18:19
Ответы с готовыми решениями:

Книги или другой источник, где описана история версий Lisp и Common Lisp
Доброго времени суток.Такой вопрос,знаете какой-нибудь источник,где описана история версий Lisp и Common Lisp.Только не всякие...

Common Lisp
Подскажите пожалуйста, а может Common Lisp формировать списки из функций, и (если вдруг может) как?

Common lisp
Есть фрагмент программы: (defun game(x y) (cond (( < x y)(print "menshe")(setq y (read))) (( > x y)(print "bolshe")(setq y...

40
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
09.11.2019, 00:07  [ТС]
Студворк — интернет-сервис помощи студентам
обработку исключений в Лиспе, особенно в CL, где она намертво завязана на CLOS
А на что они завязаны, если не? В реальных реализациях.
Я нередко вижу код который обрабатывает исключительные ситуации возращая символы в качестве кода возвратаи и реагируя заготовлеными #'function. Самопальная обработка этих самых в обход стандартных. Скорость для "горячих" учаcтков.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
09.11.2019, 00:19
Цитата Сообщение от antares0 Посмотреть сообщение
А на что они завязаны, если не? В реальных реализациях.
Сигналы - технология которая к CLOS не имеет никакого отношения. Это совершенно другая вещь про другое: тёплое с мягким. То, что conditions - это объекты, сути не меняет. Надо же как-то сопоставляться по иерархии. Есть CLOS - отлично, зачем же что-то ещё специально для этого изобретать?
Если таким образом мыслить, то получается, всё что есть в CL завязано на CLOS. Потому как в CL - всё объекты

Добавлено через 3 минуты
Цитата Сообщение от antares0 Посмотреть сообщение
Я нередко вижу код который обрабатывает исключительные ситуации возращая символы в качестве кода возвратаи и реагируя заготовлеными #'function. Самопальная обработка этих самых в обход стандартных. Скорость для "горячих" учаcтков.
Черкни-ка пример. Что ты имеешь ввиду?
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
09.11.2019, 00:21  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
"Лучших практик" чего именно? То, что open файла бросает исключение, если файл, собственно, по каким-либо причинам не открылся? Так это совершенно очевидное и корректное поведение во всех языках с поддержкой исключений.
По какой цепочке это исключение должно ловится и как это влияет на интерактивность ахитектуры. В других языках выбор между catch и сдохли.
Или скажем sb-sys:interactive-interrupt внутрености какого надмножества? Я в sbcl посмотрел и там, я так понимаю, автор из-за незнания этого пропустил еще малелько вариаций исключений которые наверное удивят пытливых студентов
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
09.11.2019, 00:44
Цитата Сообщение от antares0 Посмотреть сообщение
По какой цепочке это исключение должно ловится
В смысле по какой цепочке?
Lisp
1
2
3
4
5
6
7
8
(closer-mop:class-precedence-list (find-class 'sb-sys:interactive-interrupt))
 
;; (#<SB-PCL::CONDITION-CLASS SB-SYS:INTERACTIVE-INTERRUPT>
;;  #<SB-PCL::CONDITION-CLASS SB-SYS:SYSTEM-CONDITION>
;;  #<SB-PCL::CONDITION-CLASS COMMON-LISP:SERIOUS-CONDITION>
;;  #<SB-PCL::CONDITION-CLASS COMMON-LISP:CONDITION>
;;  #<SB-PCL::SLOT-CLASS SB-PCL::SLOT-OBJECT>
;;  #<SB-PCL:SYSTEM-CLASS COMMON-LISP:T>)
Хочешь поймать EOT лови это исключение. Не надо никаких цепочек ловить.

Что смущает-то? Что это не стандартный condition? Меня конкретно это не смущает. С какого перепугу это должно быть в стандарте? Что делать в системах, где этого может не быть?

Добавлено через 52 секунды
Цитата Сообщение от antares0 Посмотреть сообщение
В других языках выбор между catch и сдохли.
В CL ровно тоже самое.
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
09.11.2019, 00:45  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
Сигналы - технология которая к CLOS не имеет никакого отношения. Это совершенно другая вещь про другое: тёплое с мягким. То, что conditions - это объекты, сути не меняет. Надо же как-то сопоставляться по иерархии. Есть CLOS - отлично, зачем же что-то ещё специально для этого изобретать?
вызовы CLOS внутрях блока кода часто мешают оптимизациям. Оно конечно надо мерить, но чаще так.
Если таким образом мыслить, то получается, всё что есть в CL завязано на CLOS. Потому как в CL - всё объекты
Но разные объекты для компилятора если вглубь смотреть Поэтому код состоящий из атомов,символов и замыканий может быть сильно быстрее в том же sbcl. А CLOS оперирует своими классами которые альтернативны остальным объектам.
Черкни-ка пример. Что ты имеешь ввиду?
Ну что бы далеко не ходить для наглядности eof-value в read. Это остатки "досигнального" подхода к исключениям аналогичного С. И проверка такого возврата будет быстрее чем протаскивание исключений за счет стараний компилятора.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
09.11.2019, 01:00
Цитата Сообщение от antares0 Посмотреть сообщение
как это влияет на интерактивность ахитектуры
Никак не влияет. Причём тут интерактивность архитектуры? Автор хочет написать cli программку. Написали, отключили отладчик, save-lisp-and-die. Всё.

Добавлено через 8 минут
Цитата Сообщение от antares0 Посмотреть сообщение
Автор и мода несовместимы от слова совсем
Модно, среди не модных. Модно быть не модным Надеюсь, ты понял, о чём я.

Добавлено через 2 минуты
Цитата Сообщение от antares0 Посмотреть сообщение
вызовы CLOS внутрях блока кода часто мешают оптимизациям.
Мешает. Такова природа CLOS, а точнее динамической диспетчеризации. Но часто нужно не максимально быстро, а корректно и сопровождаемо. Иначе, все бы писали на Си. Но какое это имеет отношение к сигналам?

Добавлено через 2 минуты
Цитата Сообщение от antares0 Посмотреть сообщение
А CLOS оперирует своими классами которые альтернативны остальным объектам.
Нет, не альтернативны. Любая сущность в CL - корректный CLOS объект.
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
09.11.2019, 01:06  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
В смысле по какой цепочке?
В CL будет еще *DEBUGGER-HOOK* и перменный список рестартов. .Это все позволяет по другому делать архитектуру.

Что смущает-то? Что это не стандартный condition? Меня конкретно это не смущает. С какого перепугу это должно быть в стандарте? Что делать в системах, где этого может не быть?
Это подкласс SERIOUS-CONDITION по определнию стандарта. И по другой ветке наследования там внезапно будет исчерпание памяти и глубины рекурсии. Котрые автор не обработал. Учитывая что у него там рекурсивный алгоритм вычитывания из потока - будет очередное магическое падение.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
09.11.2019, 01:19
Цитата Сообщение от antares0 Посмотреть сообщение
Ну что бы далеко не ходить для наглядности eof-value в read. Это остатки "досигнального" подхода к исключениям аналогичного С.
eof-value в read вполне себе оправдан - обработка окончания потока - это слишком частая операция. Делать обработку исключительно на перехвате condition - не очень разумно. Поэтому и существует этот аргумент (который не deprecated) - выбор поведения.

Добавлено через 5 минут
Цитата Сообщение от antares0 Посмотреть сообщение
В CL будет еще *DEBUGGER-HOOK* и перменный список рестартов. .Это все позволяет по другому делать архитектуру.
Но "автору" нужно написать cli hello world, как на Си. И это можно, коли нужно.
Ну и с такой глубиной мысли, вряд-ли оценит возможности интерактивной разработки CL. Ну и слава богу

Добавлено через 3 минуты
Цитата Сообщение от antares0 Посмотреть сообщение
И по другой ветке наследования там внезапно будет исчерпание памяти и глубины рекурсии. Котрые автор не обработал. Учитывая что у него там рекурсивный алгоритм вычитывания из потока - будет очередное магическое падение.
Ой, да брось. Ты, надеюсь, не всерьёз собрался разбирать это "шедевр" Давай лучше напишем независимый от реализации CL keyboard-interrupt condition.
Давайте, голосуйте. Какие реализации CL надо поддержать?
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
09.11.2019, 01:42  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
Никак не влияет. Причём тут интерактивность архитектуры? Автор хочет написать cli программку. Написали, отключили отладчик, save-lisp-and-die. Всё.
Он у него и так отключеный в режиме скриптов. А вот отладочная печать "шумная". Сохрание образа здесь роли не сыграет.
Мешает. Такова природа CLOS, а точнее динамической диспетчеризации. Но часто нужно не максимально быстро, а корректно и сопровождаемо. Иначе, все бы писали на Си. Но какое это имеет отношение к сигналам?
Ну предполагается что там есть полезные технологии в компиляторе и кроме clos. Иначе бы и правда остался бы только С классы на лиспе поверх. А оно не так
Отношение имеет что в текущих реализациях сигналы увязаны с clos. Что невсегда хорошо в реальном коде.

Нет, не альтернативны. Любая сущность в CL - корректный CLOS объект.
Наоборот для "любой" сущности в CLOS есть BUILD-IN-CLASS как прокси для узнавания в методах. А объекты компилятора к CLOS отношения не имеют. Если у нас не лисп-машина, конечно

Модно, среди не модных. Модно быть не модным Надеюсь, ты понял, о чём я.
Не думаю что это к автору относится.

Добавлено через 16 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
eof-value в read вполне себе оправдан - обработка окончания потока - это слишком частая операция. Делать обработку исключительно на перехвате condition - не очень разумно. Поэтому и существует этот аргумент (который не deprecated) - выбор поведения.
И получается любопытный момент. При живой и описаной в стандарте системе исключений мы ради скорости вводим "самопальные" и дублирующие коды возврата ради чего-то. Терпимо, но не очень хорошо ведь. О чем и разговор был изначально.
Но "автору" нужно написать cli hello world, как на Си. И это можно, коли нужно.
И вот здесь я создаю тему с размышлениями о том как должна выглядеть эволюция архитектуры от С к интерактиву лиспа. Не с точки зрения "левого" автора а опытного лиспера

Давай лучше напишем независимый от реализации CL keyboard-interrupt condition.
Давайте, голосуйте. Какие реализации CL надо поддержать?
А она будет перехватываться? В slimv клавишная кобинация у меня уходила напрямую в кишки swank-а помоему. Минуя дебаггер. Это автор терминальную консоль минуя редакторы использует. Ему можно
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
09.11.2019, 02:04
Цитата Сообщение от antares0 Посмотреть сообщение
А вот отладочная печать "шумная".
Не шумная, а полезная. Если упали, значит что-то не учли в программе - stacktrace крайне полезен.
Цитата Сообщение от antares0 Посмотреть сообщение
Сохрание образа здесь роли не сыграет.
Понятное дело, что не сыграет. Не хочет показывать пользователю stacktrace? Сделай god exception handler, покажи только сообщение:
Lisp
1
2
3
4
5
6
(defun main ()
  (handler-case
      (someting)
    (serious-condition (e)
      (format t "~&~A~%" e)
      (exit 1))))
Добавлено через 8 минут
Цитата Сообщение от antares0 Посмотреть сообщение
Ну предполагается что там есть полезные технологии в компиляторе и кроме clos.
Конечно есть, это же Common Lisp. И CLOS этому никак не мешает.

Добавлено через 1 минуту
Цитата Сообщение от antares0 Посмотреть сообщение
Отношение имеет что в текущих реализациях сигналы увязаны с clos. Что невсегда хорошо в реальном коде.
Да как они увязаны-то? Только не говори, "потому что conditions - это объекты".

Добавлено через 3 минуты
Цитата Сообщение от antares0 Посмотреть сообщение
И получается любопытный момент. При живой и описаной в стандарте системе исключений мы ради скорости вводим "самопальные" и дублирующие коды возврата ради чего-то.
Это не ради скорости. Не никаких проблем с производительностью сигналов. Это ради того, чтоб не долбить handler-case чаще, чем это необходимо.

Добавлено через 3 минуты
Цитата Сообщение от antares0 Посмотреть сообщение
А она будет перехватываться?
Если перехватишь, будет перехватываться Я про то, что можно написать библиотеку, которая унифицирует нестандартизированные EOT conditions разных реализаций в один.
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
09.11.2019, 02:42  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
Если перехватишь, будет перехватываться Я про то, что можно написать библиотеку, которая унифицирует нестандартизированные EOT conditions разных реализаций в один.
В swank-производных по умолчанию гордо на все оптом
Code
1
make-condition 'simple-error :format-control "Interrupt from Emacs"
Что-то другое надо вручную передавать. Только вот код прехвата надо отдельно писать сам лисп клавиатурного прерывания же не видит. Только среда редактора.
А в чиcтом терминале унифицировать смысла не вижу. Слишком редко меня это волнует.

Добавлено через 11 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
Конечно есть, это же Common Lisp. И CLOS этому никак не мешает.
Если clos в блоке кода не использовать. А если есть то это уже немножко другое по оптимизациям.

Да как они увязаны-то? Только не говори, "потому что conditions - это объекты".
Просто кодовая база у них c CLOS смежная. Растет из PCL помоему. То бишь по сравнению с символами и лямбдами оно медленый газ если на волнуют оптимизации большого дерева вызовов.

Это не ради скорости. Не никаких проблем с производительностью сигналов. Это ради того, чтоб не долбить handler-case чаще, чем это необходимо.
Ну то есть у нас стандартный error и велоспедный потому что нам неудобно использовать стандартный
0
 Аватар для vlisp
1071 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,443
09.11.2019, 04:23
Цитата Сообщение от nullxdth Посмотреть сообщение
Это сто лет сложившаяся прагматичная практика.
у кого сложившаяся?
Цитата Сообщение от nullxdth Посмотреть сообщение
Каким образом скобки в пустых строках как-то помогают прочитать код?
вот видишь, ты даже этого не понимаешь
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
15.11.2019, 21:45  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
Давай лучше напишем независимый от реализации CL keyboard-interrupt condition.
Давайте, голосуйте. Какие реализации CL надо поддержать?
В replic почти это запилили и в недрах clack есть with-handle-interrupt
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
16.11.2019, 22:22
Цитата Сообщение от vlisp Посмотреть сообщение
вот видишь, ты даже этого не понимаешь
И питонисты не понимают, и функциональщики не понимают. Только покалеченным Си/Паскалем обязательно нужны begin/end или {//. А как у вас правильно

C
1
2
3
void func() {
    ...
}
или

C
1
2
3
4
void func()
{
    ...
}
?
0
фрилансер
 Аватар для Алексей1153
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
16.11.2019, 22:28
korvin_, даже вот так можно
C++
1
void func() {...}
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,767
Записей в блоге: 14
17.11.2019, 09:17
Тема начинает проситься в раздел "Священные войны"...
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.11.2019, 21:51
Цитата Сообщение от Алексей1153 Посмотреть сообщение
даже вот так можно
А правильно-то как? =)
0
фрилансер
 Аватар для Алексей1153
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
22.11.2019, 22:08
korvin_, каждый выбирает по вкусу. Ну и по длине блока. Хотя, египетский вариант лично мне делает некрасиво. Это вот такой

C++
1
2
3
void func() {
    ...
}
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.11.2019, 22:30
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Хотя, египетский вариант лично мне делает некрасиво.
Стив Макконнелл, например, считает иначе. И многие другие тоже. =)
0
фрилансер
 Аватар для Алексей1153
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
22.11.2019, 22:33
korvin_, у каждого свои недостатки ) Лично мне не жаль лишнего переноса строки. Я бумагу не экономлю использую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2019, 22:33

Common lisp
кто поможет решить эти задачи? Перечитайте правила форума. Один вопрос - одна тема. Заголовок темы должен быть осмысленным и...

Курсы ФП на Common Lisp
Курс функционального программирования стартует 27 февраля на бесплатном образовательном ресурсе https://openedu.ru , продолжительность 2,5...

Программа на common lisp
Программа на common lisp Прочитать беззнаковое целое число из стандартного потока ввода и в каждом байте числа обнулить нулевой и седьмой...

Вопрос по common lisp
Подскажите пожалуйста как выполнить лисп-программу из txt или какого другого файла?

ООП Common Lisp
Помогите пожалуйста! Реализовать класс: Программа (название, тип, сфера применения, язык программирования, ...) Класс должен иметь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
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
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru