Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/195: Рейтинг темы: голосов - 195, средняя оценка - 4.94
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 13:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от XRuZzz Посмотреть сообщение
Догадываетесь где можно узнать ответ Dennis-a прежде, чем он его опубликует в этой теме?
Я не просто догадываюсь, я знаю, что в D это сделать не возможно, ибо http://dlang.org/function.html#interpretation:
Functions which are both portable and free of side-effects can be executed at compile time.
А мемоизация, по определению с side-effect-ами. Тут 2 варианта: D не может, документация врёт. Скорее всего первый.

Добавлено через 1 минуту
Цитата Сообщение от XRuZzz Посмотреть сообщение
Rikki Cattermole автор книги "Developing with compile time in mind" пишет, отвечая Dennis-y
И правильно отвечает, ведь если бы Дениска знал D, то не задавал бы столь глупых вопросов об очевидных вещах сказанных в документации.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2015, 13:54
Ответы с готовыми решениями:

Common Lisp vs D (2)
Продолжение темы.

C++ vs Common Lisp: кодогенерация, метапрограммирование
Дано описание произвольного математических выражений на XML вида: <calc> <mul> <var>k</var> ...

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

1012
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
13.03.2015, 14:03
Цитата Сообщение от nullxdth Посмотреть сообщение
А мемоизация, по определению с side-effect-ами.
Ну и какие там при мемоизации должны быть побочные эффекты.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:07
Цитата Сообщение от XRuZzz Посмотреть сообщение
Ну и какие там при мемоизации должны быть побочные эффекты.
Запись результатов в кеш.

Добавлено через 2 минуты
Цитата Сообщение от XRuZzz Посмотреть сообщение
Немного почитал про Lisp, статья http://habrahabr.ru/post/104349/ говорит о том, что компиляторы до 2010 года опеспечивали слабую
Плохая статья. Никуда не годится. LW и ACL никто в 2010 году не отменял, а также был и есть из OpenSource Clozure CL у которого проблем с виндой не было и нет. А также Lisp с канделябром (CLISP) был тухлым и на момент 2010 г.

Добавлено через 1 минуту
Цитата Сообщение от XRuZzz Посмотреть сообщение
Давайте начнём всё сначала, вы [лисперы] все реально считаете, что запись (or (= i j) (= k l)) понятнее, чем ((i==j) || (k==l))?
Реально считаем.
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
13.03.2015, 14:10
Цитата Сообщение от nullxdth Посмотреть сообщение
Запись результатов в кеш.
Так запись в кеш осуществляется в CT или RT?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:12
Цитата Сообщение от XRuZzz Посмотреть сообщение
Так и обратное тоже верно, у CL нет фич, выгодно отличающих его от D
Напротив, куда в CL не глянь, всюду фичи качественного уровня, которых в D нет и, скорее всего, не будет.

Добавлено через 44 секунды
Цитата Сообщение от XRuZzz Посмотреть сообщение
Так запись в кеш осуществляется в CT или RT?
И в CT и в RT.
Цитата Сообщение от nullxdth Посмотреть сообщение
Тут переменная *factorial-cache* доступна и в CT, и в RT. Причём в окружении компилятора свой *factorial-cache*, а в RT - свой. Тем самым мы мемоизируем как и вычисления в CT (на константах), так и в RT.
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.03.2015, 14:13  [ТС]
Цитата Сообщение от XRuZzz Посмотреть сообщение
Есть ли возможность в Common Lisp делать ассемблерные вставки?
Есть довольно портабельный FFI, расчитанный, в основном, на C. Однако без особой необходимости (байндинги к графическим библиотекам, например) им предпочитают не пользоваться, потому что код на C небезопасный и является слабым местом лисповой программы.

Цитата Сообщение от XRuZzz Посмотреть сообщение
Ленивые вычисления Common Lisp не поддерживает...
Что значит "не поддерживает"? Ленивость - это всего-навсего вернуть лямбду (thunk) вместо настоящего результата. Вы серьёзно думаете, что CL не может вернуть лямбду? Сделать интерфейс очень просто:
http://quickdocs.org/trivial-lazy/api
две функции и макрос или вот побольше всего:
http://quickdocs.org/clazy/api
В том и дело, что подобную ерунду нет необходимости зашивать в стандарт, такой функционал с соответствующим синтаксисом нормально реализуется на уровне библиотек.

Цитата Сообщение от XRuZzz Посмотреть сообщение
Так и обратное тоже верно, у CL нет фич, выгодно отличающих его от D, тока у D приятные маленькие бинарники.
Ну вот надо поискать. Думаю, кое-что найдётся, даже если не брать метапрограммирование и вычисления во время компиляции, где они в разных весовых категориях. Сразу приходят на ум ООП и обработка исключений (в лиспе они входят в более общий класс состояний, condition). Надо бы придумать убойных примеров.

Цитата Сообщение от XRuZzz Посмотреть сообщение
Давайте начнём всё сначала, вы [лисперы] все реально считаете, что запись (or (= i j) (= k l)) понятнее, чем ((i==j) || (k==l))? Или есть те кто сомневаются?
По понятности одинаково, по простоте первая проще.

Цитата Сообщение от MrGluck Посмотреть сообщение
Скобочки ихнаше всё!
Да нет, блин, насыпьте нам запятых, точек с запятой, и скобки чтобы трёх видов вперемежку.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:15
Цитата Сообщение от XRuZzz Посмотреть сообщение
Вывод: Dшникам, можно не заморачиваться с изучением Lisp
А зачем D-шниками вообще над чем-то заморачиваться? Просто слушай Отца Александреску и делай что он говорит. Вот и всё.
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
13.03.2015, 14:15
А причём здесь RT, если мы можем вычислить факториал в CT
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:17
Цитата Сообщение от helter Посмотреть сообщение
Да нет, блин, насыпьте нам запятых, точек с запятой, и скобки чтобы трёх видов вперемежку.
Так поступили в Clojure
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.03.2015, 14:18  [ТС]
Скобки - это вообще баян, конечно. Они не нужны для чтения кода. Когда код пишут, например, на доске, очевидные скобки могут опускать.
Code
1
2
3
4
let x 1
    y 2
  + x y
=> 3
Питон!
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:20
Цитата Сообщение от XRuZzz Посмотреть сообщение
А причём здесь RT, если мы можем вычислить факториал в CT
Из того предположения, что n может быть неизвестна в CT. Пример CL демонстрирует, что одна и та же функция реализующая факториал с мемоизацией работает, как в CT, так и в RT, а макрос компилятора делает использование прозрачным без всяких там хинтов, навроде static.
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
13.03.2015, 14:21
а синтаксис, который более напоминает выражения в книжках по математике, вам не нравится?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:23
Цитата Сообщение от XRuZzz Посмотреть сообщение
а синтаксис, который более напоминает выражения в книжках по математике, вам не нравится?
Нет. Его генерировать не удобно.

Добавлено через 31 секунду
Цитата Сообщение от helter Посмотреть сообщение
Питон!
Забавно. Можно ссылку?
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
13.03.2015, 14:24
Цитата Сообщение от nullxdth Посмотреть сообщение
Из того предположения, что n может быть неизвестна в CT. Пример CL демонстрирует, что одна и та же функция реализующая факториал с мемоизацией работает, как в CT, так и в RT, а макрос компилятора делает использование прозрачным без всяких там хинтов, навроде static.
И что вы хотите сказать, что D может справиться при вычислениях в CT и не может закэшировать факториал в RT?

Добавлено через 51 секунду
Цитата Сообщение от nullxdth Посмотреть сообщение
Нет. Его генерировать не удобно.
Что значит генерировать, компилятору сложно это обрабатывать?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:27
Цитата Сообщение от XRuZzz Посмотреть сообщение
И что вы хотите сказать, что D может справиться при вычислениях в CT и не может закэшировать факториал в RT?
Может, если разветвиться по __ctfe.
D не может закешировать факториал в CT. Вот в чём дело.
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
13.03.2015, 14:28
В чём суть неудобства.

Добавлено через 1 минуту
Цитата Сообщение от nullxdth Посмотреть сообщение
D не может закешировать факториал в CT. Вот в чём дело.
как это, он же может посчитать его в CT, значит не важно кэширует он факториал или нет. Я просто не хочу отбирать хлеб у Dennis-а и приводить код, который написал Rikki Cattermole.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
13.03.2015, 14:33
Цитата Сообщение от XRuZzz Посмотреть сообщение
а синтаксис, который более напоминает выражения в книжках по математике, вам не нравится?
это у вас там ноги отдельно, крылья отдельно: если вызов функции, то mexpr, если мат выражение то инфикс, если биндинг то ravalue, lvalue, если предложение, то кончается точкой с запятой. В лиспе всё просто: предложение значит в скобках, первый терм предлоежения - функция или макрос, остальные - аргументы. Всё, точка. Несколько специальных символов существуют лишь для краткости записи: '(a) то же что и (list (quote a)).
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:38
Цитата Сообщение от XRuZzz Посмотреть сообщение
как это, он же может посчитать его в CT значит, он как бы автоматически его закеширует.
Ну с т.з. компиляции, это позволит уменьшить время, собственно, компиляции. Но factorial - просто пример, можно и не кешировать его в CT, ничего страшного. Просто этот пример хорошо показывает, что Lisp-у доступна вся функциональность (любые библиотеки) в CT вне зависимости от их чистоты. Это означает, к напримеру, что я могу взять любую библиотеку по разбору XML и скомпилировать DSL с синтаксисом XML в Lisp код в CT. Я, например, так и делаю, предоставляя декларативное описание на XML UI поверх своей библиотеки - биндинга к Tk.

А что мне даст в этом случае D? Да ничего не даст. Или ты предлагаешь по быстренькому написать pure XML parser на D?
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
13.03.2015, 14:43
Цитата Сообщение от nullxdth Посмотреть сообщение
Ну с т.з. компиляции, это позволит уменьшить время, собственно, компиляции.
То есть претензия к D в том, что, вероятно, в какой то момент времени вычисления факториала во время компиляции пройдут чуть медленнее?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
13.03.2015, 14:44
Цитата Сообщение от XRuZzz Посмотреть сообщение
То есть претензия к D в том, что, вероятно, в какой то момент времени вычисления факториала во время компиляции пройдут чуть медленнее?
Нет. Прочти мой пост чуть дальше этого предложения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2015, 14:44

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru