Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2013-03-14 09:51:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Забавное
[info]pargentum@lj решил что он мене разоблачил.

Хотя как раз та самая работа и была первым в моей практике "коммерческим" применением ML и purely functional data structure (тогда еще SML/NJ, поскольку только начинал разбираться). Собственно после того реально и проникся - обнаружив насколько резко упростилась казавшаяся сложной задачка.

А задачка была забавная: если делать из gcc тул для интерактивного анализа кода (на проблему 2000 или что еще - не суть важно), привязка препроцессорного текста "с точностью до строчки" не очень устраивает - поскольку хочется иметь возможность ткнуть мышкой в имечко или оператор, ну и подсветить в тексте найденное правильно, а компилятор работает на уровне "послепрепроцессора".

Ну вот предлагаю задачку - как адекватно ее решить не теряя информации вообще (попытки подхачить cpp блестяще обломились - человек, который это делал протрахался с пару месяцев и так и не смог победить ±1 позицию и прочие радости gcc).


(Читать комментарии) - (Добавить комментарий)


[info]tristes_tigres
2013-03-15 15:44 (ссылка)
Я думаю, что сама постановка задачи и обсуждение у [info]pargentum@lj содержат ответ. Раз влезать внутрь CPP неперспективно и тонет в многочисленных деталях, остаётся только сама программа. Вместо текстового файла её нужно сделать древовидной такой структурой данных - когда препроцессор делает подстановку, то вместо замены текста, исходный текст становится узлом, а подставленный препроцессором текст - листом. И так далее.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]blue_slonopotam
2013-03-16 09:52 (ссылка)
>purely functional data structure - ... насколько резко упростилась казавшаяся сложной задачка.

Вот это интересный момент, каким именно боком оно тут помогло.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2013-03-16 11:38 (ссылка)
Ну просто деревяшка как текст, а любое изменение - формирование новой деревяшки - это оно в чистом виде. Подходом кстати я проникся не из ML, а из либы cord.

Там еще есть забавный момент, что надо кластеризовать группы подстановок - иначе O(n^2) получается.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]blue_slonopotam
2013-03-18 21:09 (ссылка)
>Ну просто деревяшка как текст, а любое изменение - формирование новой деревяшки - это оно в чистом виде

А понял, просто метода та же - снизу вверх ползти и новые узлы создавать, если дети поменялись, а что старое дерево целым осталось - не используется.

>иначе O(n^2) получается.
У меня новое деревце экспонента от размера старого, и почти все живы.

(Ответить) (Уровень выше)


(Читать комментарии) -