
Denis
09.02.2018
15:36:01
чего-то я уже хреново помню как делал

Dmitry
09.02.2018
15:36:07
а потом искать common prefix ?

Denis
09.02.2018
15:36:20
по-моему конечные автоматы строил

Dmitry
09.02.2018
15:36:21
ну короч, проблема кажется скорее cs, чем относящаяся к конкретному инструменту

Google

Александр
09.02.2018
15:36:33

Dmitry
09.02.2018
15:36:45
но тебе же надо наоборот - по КА который у тебя и так есть - сгенерировать грамматику, которую он разбирает
т.е инвертировать
это ж тянет на какой-нибудь пейпер или же вообще что-то фундаментальное из их теории?

Denis
09.02.2018
15:37:13
да не, даже либ таких больше одной

Dmitry
09.02.2018
15:37:46
ну мне приходит в голову только ограниченный перебор, хотя как тут перебирать, если у нас '*' например
ну или например
ну короч, тут надо пописать код и подумать, и скорее всего есть пейперы как это вообще делается

Denis
09.02.2018
15:39:20
Сейчас могу врать, но для не очень фичастых регулярок пересечения можно найти вполне, а для сложных сводится к преобразованию в простые и прогону первого.
я тогда где-то идею украл и заимплементил
может даже код остался

Dmitry
09.02.2018
15:39:47
проблема выглядит как что-то такое, что есть или в учебникак или пейперах

Google

Dmitry
09.02.2018
15:40:02
@catamorphism да, это то, что в голову приходит
т.е какой-то минимальный алфавит регулярок, а потом сложные разложить на простые и уже их сравнить

Denis
09.02.2018
15:42:38
https://www.google.ru/search?client=safari&rls=en&dcr=0&q=paper+regular+expressions+intersection&spell=1&sa=X&ved=0ahUKEwiYytf6lZnZAhUEjiwKHcb1DJkQkeECCCYoAA
довольно много всякого гуглится

Dmitry
09.02.2018
15:44:29
ну и самое тупое все же - взять минимальный алфавит и набор эвристик - т.е если регулярка матчит диапазон - то генерировать наименьший символ для этого диапазона и тп. сгенерить тексты и сравнить их. сходу все равно не выдумать лучше. чем у авторов пейперов, которые на этом защищались
https://qntm.org/greenery

A64m
09.02.2018
16:05:50
скачал весь хекедж, 15MLOC всего

Alister
09.02.2018
16:06:35
а в мегабайтах?

A64m
09.02.2018
16:07:08
гига три, но это всего вместе, не только хаскельные файлы
ну, т.е. не весь, последние версии всех пакетов
в агде оказывается имплициты применяются

Leonid
09.02.2018
16:19:39
Ну у нас сейчас четко отделены сами языки предметной области, на которых мы пишем, как наш ресторанный сервис должен работать, от имплементации, где находятся всякие BD, HTTP, конкретные либы (для времени, для дат, для всякого такого), а также настройки конкретных внешних сервисов (invoicing services, сервисов заказа еды и проч). Из наших сценариев не видно никаких лишних деталей. Например, там не светятся API keys, не светится модель данных для БД. Мы просто оперируем нашими ADT. И еще мы можем любую чать имплементации оторвать и протестировать без нее. Не будешь же дергать реальный invoicing service в тестах. Но прелесть в том, что наши сценарии чистые, предсказуемые, и там кроме предметной области ничего нет лишнего.
Ну как мы все это делаем без фри монад я вообще не представляю. Но работает!

Александр
09.02.2018
16:25:54
Ну мы же уже выяснили, что можно разными способами решать.
Полагаю, на этом тема уже исчерпана

Leonid
09.02.2018
16:26:57
Ну слава богу
mtl 1, SOLID монады 0

Александр
09.02.2018
16:27:58
? Я сегодня добрый, разрешаю

Leonid
09.02.2018
16:32:10
по итогу дня - 29 ретвитов и 96 лайков. Great success!

Dmitry
09.02.2018
16:32:10
а давайте за mtl
как "это" делается на mtl ?

Google

Александр
09.02.2018
16:32:46
Через постель, все через постель
Сорри

Leonid
09.02.2018
16:32:58
newtype deriving + instance

Dmitry
09.02.2018
16:38:53
ну т.е
это всё тоже самое, о чем говорит чувак тут https://markkarpov.com/post/free-monad-considered-harmful.html плюс newtype deriving ?
тупо тайпклассы?

Leonid
09.02.2018
16:39:24
ну таки да

Dmitry
09.02.2018
16:39:41
а для интроспекции можно написать тайпкласс, который вернет фри
если очень хочется.

Александр
09.02.2018
16:40:52
Я не успел картинку посмотреть

Dmitry
09.02.2018
16:41:03
google: чебуречная дружба

Leonid
09.02.2018
16:41:44
и мусора не больше, что TerminalM a, что Terminal m => m a

Dmitry
09.02.2018
16:42:08
ну мне этот подход кажется более понятным и простым
т.е я вообще не знал, что это, оказывается, какой-то подход
для которого есть специальное название, и он является альтернативой чему-то.
возможно потому, что mtl добавляется в проекты сразу после base,containers и text
я думал, это просто программирование на хаскелле.

Александр
09.02.2018
16:45:49
Чатик полезен!

Dmitry
09.02.2018
16:46:06
ну да, я пойду почитаю статей

Denis
09.02.2018
16:46:13

Google

Dmitry
09.02.2018
16:46:13
надо только смотреть, что бы не от олега были
хахах.

Denis
09.02.2018
16:46:26

Dmitry
09.02.2018
16:46:36
заведомо слишком умный, что бы я его понял

Denis
09.02.2018
16:47:10

A64m
09.02.2018
16:47:21
это не просто какой-то подход, это изобретение одного из самых известных изобретений Олега Киселева независимо от Киселева, являющееся альтернативой одного из самых известных изобретений Киселева

Dmitry
09.02.2018
16:47:40
так и должно быть.
мы все просто сон Киселёва.

Александр
09.02.2018
16:48:05
А Киселев - сон бабочки?

Denis
09.02.2018
16:48:24

A64m
09.02.2018
16:48:59
про таглесс файнл

Denis
09.02.2018
16:49:41
и статья у него классная про тайпклассы

A64m
09.02.2018
16:50:05
ну это которому альтернатива

Denis
09.02.2018
16:50:18

A64m
09.02.2018
16:50:30
да

Alexander
09.02.2018
16:52:36

Dmitry
09.02.2018
16:53:05
а еще про него рассказывал чувак на фпконфе, и не называл это такими словами
т.е его видимо изобретают все, просто не у всех есть для этого специальные названия
но это ладно. наверняка ведь в интернетах были и другие срачи free vs tagless ?

Google

Denis
09.02.2018
16:55:31

A64m
09.02.2018
16:55:47
его даже как ООПе паттерн независимо изобрели

Leonid
09.02.2018
16:56:00
у пурсы это всё от бедности рантайма

Denis
09.02.2018
16:56:08
они даже сами это описали
https://github.com/purescript/purescript-free#purescript-free

Leonid
09.02.2018
16:57:02
Можете удивлятся https://github.com/slamdata/purescript-aff/blob/master/src/Control/Monad/Aff.js

Oleg
09.02.2018
16:57:21
опять про своё старьё трёте
Могли бы typelevel DSLи писать

Александр
09.02.2018
16:59:04
Чтобы typelevel DSLи писать, - это надо, чтобы у твоего работодателя были стальные, ну или ты сам им был

Denis
09.02.2018
16:59:54

Dmitry
09.02.2018
17:00:18
Александр сервант же.

Александр
09.02.2018
17:00:52

Denis
09.02.2018
17:00:58
или хайпер https://github.com/owickstrom/hyper

Oleg
09.02.2018
17:01:00

Александр
09.02.2018
17:01:18
Нервы

Oleg
09.02.2018
17:01:47
Буду знать, что у моего стальные

Александр
09.02.2018
17:02:35
Вот и рассказали бы свой опыт, поделились знаниями. Как писать, что использовать