Clojure Какие интересные концепции есть в Лиспе?25.01.2016, 23:16. Показов 7651. Ответов 61
Метки нет (Все метки)
В смысле, что бы еще попробовать реализовать. На Call-CC все засматриваюсь, но для начала надо понять что это вообще такое. F-expr (функции с ленивыми аргументами) - а нужны ли они? Если значения входящих аргументов можно заквотировать. Окружение, как объект первого класса? Но ведь можно его захватить замыканием и использовать когда надо.
Добавлено через 4 минуты Пока балуюсь подобными вещами, но это несложно:
0
|
||||||
| 25.01.2016, 23:16 | |
|
Ответы с готовыми решениями:
61
|
| 18.09.2016, 22:12 [ТС] | ||
|
vlisp, я использую интероп с джавой и работаю с ее классами и их методами через рефлекшн. То есть, на уровне платформы реализации это вполне себе ООП. Семантика же моего Лискрипта очень похожа на Схему, где также можно накостылить свое ООП на замыканиях. У меня было (и есть) 2 принципиально разных кода этого примера - здесь показан максимально использующий структуры данных, классы и методы java - так получается быстрее и больше шариков летает без замедления. Но есть и код, по минимуму использующий платформу реализации (только методы создания окна и рисования в нем) - он конечно медленнее.
0
|
||
|
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
||||
| 19.09.2016, 09:30 | ||||
|
Добавлено через 12 минут
1
|
||||
| 19.09.2016, 11:08 | |||||||
0
|
|||||||
|
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
|
||
| 19.09.2016, 11:17 | ||
|
0
|
||
|
Заблокирован
|
|
| 19.09.2016, 13:05 | |
|
0
|
|
|
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
|
|
| 19.09.2016, 13:28 | |
|
Да. Это взято из CLOS (там можно так) вот есть старая тема про мой язык, правда в ней ссылки уже устарели, а поправить нельзя
0
|
|
| 19.09.2016, 16:05 [ТС] | |
|
Кстати, Catstail, у вас в HomeLisp есть макросы? У вас же, насколько я понимаю, интерпретатор, без компиляции. Значит, макросы (если они есть) раскрываются на предварительной стадии перед интерпретацией (собственно компиляции нет, значит есть стадия макрораскрытия)?
У меня то как раз проще решено - макросы раскрываются прямо в рантайме, по ходу интерпретации, никаких предварительных стадий компиляции\макрораскрытия нет.
0
|
|
|
Супер-модератор
|
||||||
| 19.09.2016, 16:28 | ||||||
|
Не помню, показывал ли раньше. Вот так в HomeLisp выглядит известный Microsoft-овский пример управления Excel из скрипта:
1
|
||||||
|
Супер-модератор
|
||||||
| 19.09.2016, 16:42 | ||||||
|
_Ivana, спасибо! Я еще планирую интерфейс с DirectX сделать. А интерфейс с winAPI уже есть:
1
|
||||||
| 19.09.2016, 16:55 [ТС] | ||||||
|
Catstail, меня впечатляет, признаЮ поражение своего скрипта в неофициальном фичевом зачете
![]() ЗЫ хотя у меня намедни еще одна киллер-фича наклюнулась - я ее даже реализовал, но не знаю, шлифовать ли до релиза. Это возможность прямо в рантайме (при исполнении, что называется) компилировать java-класс из текста кода, написанного в интерпретаторе. То есть такое уже работает:
0
|
||||||
|
Супер-модератор
|
|
| 19.09.2016, 17:00 | |
|
_Ivana, бросьте. Это скорее я должен признать поражение. Добавить этих возможностей (то, что я показал) - дело не особо хитрое. Суть - в языке. Свою реализацию я ориентировал на CL. А Вы по сути создали действительно вариант Лиспа (и довольно интересный).
0
|
|
| 12.11.2016, 10:11 [ТС] | |||||||||||
|
Дописал 4 строчки кода в интерпретатор и реализовал давно лежащую на поверхности идею - вычисления в любом переданном контексте (окружении). Новая ядерная особая форма eval-in, принимает лямбду (ибо у меня нет окружений как объектов первого класса, но это и не требуется, ибо лямбды содержат их в себе как замыкания) и список, который надо вычислить в окружении этой переданной лямбды. Пример:
) менять состав их "полей" и "методов" произвольным образом.Добавлено через 7 часов 39 минут По прошествии времени подумалось мне, что можно выпилить эту особую форму обратно из языка, ибо имхо того же можно добиться следующим образом: замыкание возвращает унарную лямбду, ожидающую на входе нульарный макрос, который она будет вычислять в своем окружении. Макрос у нас гражданин первого класса, может передаваться в качестве параметра в функции, и по семантике своего замкнутого окружения не имеет и будет вычисляться в окружении вызова, откуда и будет черпать свои свободные переменные:
UPD не факт, что этот вариант изоморфен по возможностям - например, создание новых переменных тут происходит в контексте лямбды, и не меняет контекст f, в отличие от варианта с eval-in. Макросами можно изменять значения переменных контекста f, но не добавлять новые. Хотя может можно придумать, как обойти это ограничение.
2
|
|||||||||||
|
Заблокирован
|
|
| 12.11.2016, 13:56 | |
|
_Ivana, А не могли бы Вы объяснить что делает Ваш код для тех, кто никогда на Лиспе не программировал и вообще ни на каком языке не программировал.
А? И в чем преимущество Вашего кода по сравнению с решениями этой задачи на других ЯВУ? Добавлено через 3 минуты А то то отдельные слова ("мутирующий", "макрос", "лямбда", "контекст"/"окружение", "арность") - это мои любимые слова для гугления. И их смысл я понимаю. А вот общий смысл сказанного Вами, пардон, никак понять не могу Добавлено через 47 секунд Это имеет какое-то отношение к самомодифицирующемуся коду или нет?
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
||
| 13.11.2016, 20:58 | ||
|
1
|
||
|
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
|
|||||||||||
| 29.12.2016, 12:18 | |||||||||||
|
Есть концепции логического программирования - я бы выделил недетерминизм и унификацию. Они обычно ассоциируются с Прологом, но можно приспособить и к Лиспу. Например, есть вот такой проект
Мне тоже понадобился недетерминизм (для гибкости в написании парсеров) и я его реализовал.
Ссылка на исходники
2
|
|||||||||||
|
Заблокирован
|
|
| 20.01.2017, 21:05 | |
|
В современных мейнстримных диалектах кроме продолжений ничего интересного нет, это алголоподобные языки. Исторически, же, очень много интересого. Рефлексия, эквивалентность кода и данных, дефолтный динамический биндинг, кроме того, диалект лиспа Planner включал бектрекинг, логическое программирование, паттерн-матчинг, ООП(в форме акторов), и многое другое. В давние времена лиспы были катализаторами развития CS
0
|
|
|
Заблокирован
|
||||
| 21.01.2017, 11:53 | ||||
|
Добавлено через 1 минуту
0
|
||||
| 21.01.2017, 11:53 | |
|
Помогаю со студенческими работами здесь
60
Clojure Как пользоваться трассировкой в Лиспе Clojure Как работает классическая сборка мусора в лиспе? Сколько памяти занимает cons-ячейка? Кто какие знает интересные компоненты VCL Какие модели из перечисленных, самые интересные по вашему мнению? Реализация циклов на Лиспе, Вложенные циклы на Лиспе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так?
Да, всё верно. Я — искусственный интеллект.
Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
|
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает.
В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше.
Перед запуском проверяем. . .
|