Dmitry
но тебе же надо наоборот - по КА который у тебя и так есть - сгенерировать грамматику, которую он разбирает
Dmitry
т.е инвертировать
Dmitry
это ж тянет на какой-нибудь пейпер или же вообще что-то фундаментальное из их теории?
Denis
Denis
да не, даже либ таких больше одной
Dmitry
ну мне приходит в голову только ограниченный перебор, хотя как тут перебирать, если у нас '*' например
Dmitry
ну или например
Dmitry
ну короч, тут надо пописать код и подумать, и скорее всего есть пейперы как это вообще делается
Denis
Сейчас могу врать, но для не очень фичастых регулярок пересечения можно найти вполне, а для сложных сводится к преобразованию в простые и прогону первого.
Denis
я тогда где-то идею украл и заимплементил
Denis
может даже код остался
Dmitry
проблема выглядит как что-то такое, что есть или в учебникак или пейперах
Dmitry
@catamorphism да, это то, что в голову приходит
Dmitry
т.е какой-то минимальный алфавит регулярок, а потом сложные разложить на простые и уже их сравнить
Denis
https://www.google.ru/search?client=safari&rls=en&dcr=0&q=paper+regular+expressions+intersection&spell=1&sa=X&ved=0ahUKEwiYytf6lZnZAhUEjiwKHcb1DJkQkeECCCYoAA
Denis
довольно много всякого гуглится
Dmitry
ну и самое тупое все же - взять минимальный алфавит и набор эвристик - т.е если регулярка матчит диапазон - то генерировать наименьший символ для этого диапазона и тп. сгенерить тексты и сравнить их. сходу все равно не выдумать лучше. чем у авторов пейперов, которые на этом защищались
Dmitry
https://qntm.org/greenery
A64m
скачал весь хекедж, 15MLOC всего
Aliester
а в мегабайтах?
A64m
гига три, но это всего вместе, не только хаскельные файлы
A64m
ну, т.е. не весь, последние версии всех пакетов
A64m
в агде оказывается имплициты применяются
Leonid 🦇
Ну у нас сейчас четко отделены сами языки предметной области, на которых мы пишем, как наш ресторанный сервис должен работать, от имплементации, где находятся всякие BD, HTTP, конкретные либы (для времени, для дат, для всякого такого), а также настройки конкретных внешних сервисов (invoicing services, сервисов заказа еды и проч). Из наших сценариев не видно никаких лишних деталей. Например, там не светятся API keys, не светится модель данных для БД. Мы просто оперируем нашими ADT. И еще мы можем любую чать имплементации оторвать и протестировать без нее. Не будешь же дергать реальный invoicing service в тестах. Но прелесть в том, что наши сценарии чистые, предсказуемые, и там кроме предметной области ничего нет лишнего.
Ну как мы все это делаем без фри монад я вообще не представляю. Но работает!
Alexander
Ну мы же уже выяснили, что можно разными способами решать.
Alexander
Полагаю, на этом тема уже исчерпана
Leonid 🦇
Ну слава богу
Leonid 🦇
mtl 1, SOLID монады 0
Alexander
😊 Я сегодня добрый, разрешаю
Leonid 🦇
по итогу дня - 29 ретвитов и 96 лайков. Great success!
Dmitry
а давайте за mtl
Dmitry
как "это" делается на mtl ?
Alexander
Через постель, все через постель
Alexander
Сорри
Leonid 🦇
newtype deriving + instance
Dmitry
ну т.е
Dmitry
это всё тоже самое, о чем говорит чувак тут https://markkarpov.com/post/free-monad-considered-harmful.html плюс newtype deriving ?
Dmitry
тупо тайпклассы?
Leonid 🦇
ну таки да
Dmitry
а для интроспекции можно написать тайпкласс, который вернет фри
Dmitry
если очень хочется.
Alexander
Я не успел картинку посмотреть
Dmitry
google: чебуречная дружба
Leonid 🦇
и мусора не больше, что TerminalM a, что Terminal m => m a
Dmitry
ну мне этот подход кажется более понятным и простым
Dmitry
т.е я вообще не знал, что это, оказывается, какой-то подход
Dmitry
для которого есть специальное название, и он является альтернативой чему-то.
Dmitry
возможно потому, что mtl добавляется в проекты сразу после base,containers и text
Dmitry
я думал, это просто программирование на хаскелле.
Alexander
Чатик полезен!
Dmitry
ну да, я пойду почитаю статей
Dmitry
надо только смотреть, что бы не от олега были
Dmitry
хахах.
Зигохистоморфный
Dmitry
заведомо слишком умный, что бы я его понял
A64m
это не просто какой-то подход, это изобретение одного из самых известных изобретений Олега Киселева независимо от Киселева, являющееся альтернативой одного из самых известных изобретений Киселева
Dmitry
так и должно быть.
Dmitry
мы все просто сон Киселёва.
Alexander
А Киселев - сон бабочки?
Зигохистоморфный
A64m
про таглесс файнл
Зигохистоморфный
и статья у него классная про тайпклассы
A64m
ну это которому альтернатива
A64m
да
Alexander
Dmitry
а еще про него рассказывал чувак на фпконфе, и не называл это такими словами
Dmitry
т.е его видимо изобретают все, просто не у всех есть для этого специальные названия
Dmitry
но это ладно. наверняка ведь в интернетах были и другие срачи free vs tagless ?
Зигохистоморфный
A64m
его даже как ООПе паттерн независимо изобрели
Leonid 🦇
у пурсы это всё от бедности рантайма
Зигохистоморфный
они даже сами это описали
Зигохистоморфный
https://github.com/purescript/purescript-free#purescript-free
Leonid 🦇
Можете удивлятся https://github.com/slamdata/purescript-aff/blob/master/src/Control/Monad/Aff.js
Oleg
опять про своё старьё трёте
Могли бы typelevel DSLи писать