Clojure Какие интересные концепции есть в Лиспе?25.01.2016, 23:16. Показов 7911. Ответов 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,782
|
||
| 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 | |
|
Clojure Как пользоваться трассировкой в Лиспе Clojure Как работает классическая сборка мусора в лиспе? Сколько памяти занимает cons-ячейка? Кто какие знает интересные компоненты VCL Какие модели из перечисленных, самые интересные по вашему мнению? Реализация циклов на Лиспе, Вложенные циклы на Лиспе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|