Aleksei (astynax)
он может
кана
но щас там ленивость, тардисы, генерация кода по типу
Зигохистоморфный
Дима
Результат, естественно, потребует ярн и будет в монорепе
Alexander
а зачем, может лучше все остальное на хаскель?
NC
Кто-нибудь к сервант клиенту прикручивал digest авторизацию?
NC
Я пошерстил хакадж, апи серванта на авторизацию, похоже мне либо выкидывать сервант клиент и писать на http-client или форкать
gsomix
Andrey
Кто-нибудь уже писал парсер для регулярных выражений, с последующим построением парсера для них же на parsec? Я бы скопипастил, чтобы самому не делать.
Влод
сложный запрос
Andrey
Был бы простой, я бы не спрашивал.
Сергей
есть парсер регулярных выражений https://github.com/sweirich/dth/tree/master/regexp
A64m
C++ (Eigen3)?
ну это все-таки разные библиотеки, vector это же не линейная алгебра, а контейнерная библиотека общего назначения. Но да, плюсы один из немногих языков в которых средства для написания таких библиотек есть
Зигохистоморфный
https://github.com/nomeata/ghc-justdoit
A64m
ну наконец-то, последние полгода хоть начали плагины компилятора писать, может не массово, но достаточно часто
Влод
как будто что-то необходимое
Leonid 🦇
так глядишь и фичи не надо будет через коммитет проводить
A64m
правда половину один и тот же человек
A64m
как будто что-то необходимое
конечно необходимое, без плагинов компилятора (не только таких вот для тайпчекера, но и дя оптимизатора) нормальные библиотеки не написать
Влод
а vscode+intero видимо не умеет понимать что находится в тестовом пакедже со своими зависимостями?
Влод
ну или не пакедже. как это назвать то
Aleksei (astynax)
intero умеет, но ему надо сказать, что test suite, это тоже таргет
Aleksei (astynax)
Умолчательно target, это только library
Влод
а как это примерно?
Влод
там топ-левел поле targets должно быть?
Dmitry
@rblaze а зачем такое может быть нужно?
Aleksei (astynax)
В emacs для этого есть хоткей. Стоит посмотреть в доке для плагина VSCode
Влод
аа это даже не для кабала указывается
Aleksei (astynax)
Это опция процесса intero, запускаемого редактором в фоне
Cheese
"цель" — это отношение сборщика к компоненту
Aleksei (astynax)
> You can change loaded targets by clicking in the button at the bottom right default target.
Aleksei (astynax)
@vlastachu ^
Влод
ого. вот это удобно
A64m
фактически, требования такие же, как и для нетестовой части
Влод
ну да нужно в режиме подсветки без всякой умной фигни дойти до состояния когда всё хорошо и там включить всю умную фигню. возможно это даже можно делать не перезагружая VSCode
A64m
да можно, но hie вообще хоть как-то работает с осени, там все недоделано еще, правда такие хаскельные тулы обычно в недоделанном состоянии насегда и остаются
Alexander
Пытаюсь понять, что же монада все-таки такое.
Alexander
https://cemulate.github.io/the-mlab/
Alexander
у канта описано
Alexander
монада это минимальная неделимая вещьь
Alexander
Ну вот по ссылке, допустим
Alexander
(к слову это не совсем шутка, т.к. исторически в математику monad именно из-за канта попало)
adam
Самым простым объяснением, которое может быть дано относительно определения монады -- это тот факт, что монада является Божественной искрой или лучом в определенной метастазе вида того индивидуализированного «дыхания» абсолюта и проявленная в бесконечной энергией спектрального пространства единой универсальной монады.
A64m
не у Лейбница разве?
Alexander
@A64m_qb0 мне кажется оно там делает несколько хопов
A64m
Danila Matveev
A64m
parket
Monads are trees with grafting [c]
Alexander
Да я и что такое монада в Хаскелле понимаю, так-то
кана
я все же воспринимаю монаду как схлопывание двух "кодирований" "эффекта" в один, то есть m (m a) -> m a, или более наглядно m . m ~> m (тут уже видно полугруппу, а если добавить 1 -> m, получаем и моноид), а не как композиция стрелок клейсли
Alexander
Или думаю, что понимаю
Alexander
я все же воспринимаю монаду как схлопывание двух "кодирований" "эффекта" в один, то есть m (m a) -> m a, или более наглядно m . m ~> m (тут уже видно полугруппу, а если добавить 1 -> m, получаем и моноид), а не как композиция стрелок клейсли
Ну вот вы пишете m a, подразумевая, что m - монадический тип. Однако это соглашение внешнему наблюдателю может быть неизвестно. Поэтому, возможно, стоит уточнять, что Monad m => m a. Ведь без этого уточнения что m a, что t a или f a - суть одно и то же с точностью до переименования (или, если угодно, с точностью до внутрехаскельных соглашений)
кана
в моем случае я лишь ставлю ограничение, что m - функтор, хотя бы просто * -> *. Тройка
(m: * -> *, f: m . m ~> m, g: 1 -> m)
- вот это и есть монада
Alexander
parket
Alexander
А никто не говорил, что я не буду здесь занудствовать в чатике.
A64m
я вообще не понимаю что такое "монадический" "тип"
parket
parket
Alexander
по одному из определений
По какому определению? Да, каждая монада - это функтор. А наоборот тоже что ли верно? Моя интуиция из практики говорит, что как будто бы нет. Хотя для Free-монады, действительно, требование только функтора есть
A64m
Alexander
монадический тип - тип имеющий инстанс Monad ваш К.О.
Alexander
это не О. конечно, но вроде так
Alexander
просторечие
A64m
return это часть способа композить стрелки
Alexander
в определении тройки есть, функтор, join и return
A64m
конструктор типа, рыбка и ретурн (со свойствами ассоциативности и правой-левой идентичности)
кана
по "определению" (не знаю, насколько оно официальное, но мне оно очень понравилось, когда я его понял) монады как моноида на категории эндофункторов
Что есть моноид? Моноид это тройка из множества M, операции *: M * M -> M (ассоциативной), нейтрального элемента e: 1 -> M
Категория эндофункторов - категория, где объекты - функторы C -> C, где C - некая категория
получается, моноид на категории эндофункторов - тройка из эндофунктора M (в хаскеле это просто функтор, потому что там все функторы - эндофункторы), естественного преобразования M * M ~> M (если выйти из категории эндофункторов, то это join : M (M a) -> M a, и нейтарльного элемента 1 ~> M, в нашей категории это return : a -> M a (1 это Identity-функтор, Identity a = a, поэтому я его опустил тут)
~> - естественное преобразование, морфизм в категории функторов,
f ~> g = forall a. f a -> g a