Denis
в других языках придумали ПО чтобы описывать типы в хаскелле?
Ilya
Описать сигнатуру одной функции не сложно, а если их 100?
Anonymous
ну ты же хочешь нормальную типизацию если используешь хаскель, так?
Ilya
Ilya
Similarly, to export the following Haskell function:
triple :: Int -> Int triple x = 3*x
so that it can be used in foreign codes, you only have to write:
foreign export ccall triple :: Int -> Int
Ilya
Зачем тут Int -> Int писать второй раз?
Cheese
Denis
@cblp_su ну мне либо регулярки на зав. типах переписывать(Вейрих после strangeloop библиотеку не релизнула, к слову?), либо так
Cheese
Denis
можно конечно и самому написать, но это долго и лень
Denis
https://github.com/sweirich/dth/tree/master/regexp
Denis
ну как всегда, подготовлено для доклада/пейпера и всё
Ilya
Ilya
Ilya
Короче это всё равно отдаёт какой-то лишней работой. Не знаю, может меня избаловал swig
Ilya
Вот там можно импортировать целую либу за O(1) от размера либы
Ilya
Не за O(n)
Cheese
наверное, для Haskell тоже можно написать swig
Cheese
наверное, кто-то для себя уже написал
Cheese
а swig, простите, в какой язык встроен?
Ilya
Он не встроен, это внешний инструмент для связывания C/C++ и остальных языков
Ilya
Список "остальных языков"
Allegro Common Lisp support
Android support
C# support
Chicken support
D support
Go support
Guile support
Java support
Common Lisp support
Lua support
Modula3 support
MzScheme/Racket support
Ocaml support
Octave support
Perl5 support
PHP support
Pike support
Python support
R support
Ruby support
Tcl support
Ilya
Х-ля нет
Кабачок
https://wiki.haskell.org/Foreign_Function_Interface#Tools
Ilya
Andrei
Кабачок
Гитхаб в очередной раз что-то сделал с интерфейсом — опять глаза текут.
Aragaer
в каком месте?
Кабачок
Переделали фид, где отображалась активность зафоловленных аккаунтов, и добавили рекомендации (!)
Кабачок
На главной
Aragaer
а. Чот может и поменялось. Я там задерживаюсь примерно на минуту, чтобы перейти на какой-то из своих репозиториев, когда забыл его точное название. Обычно иду напрямую
Aragaer
и у меня почему-то нет рекомендаций вроде
Aragaer
а, вкладка discover
Anonymous
Cheese
Х-ля нет
можно же взять и дописать внешний инструмент вместо того, чтобы ругать за недостаточную красоту то, что в Хаскелле есть из коробки
Alexander
кто-нить bindings-DSL юзал?
Alexander
т.е. остальные не для автоматического импорта, а просто жизнь немного упрощают
Cheese
Кабачок
Теперь там жирные черные буквы и аватарки.
Chris
Сегодня набрел на статью - http://bitemyapp.com/posts/2017-10-06-persistent-ecto-activerecord.html
Речь там о Persistent, и мне вспомнилось, что кто-то в этом чате ругал его и говорил, что esqueleto норм. Если мне это не привиделось, то отзовитесь и скажите в чем там проблема и стоит ли боятся его использовать?
Kirill
esqeleto так-то поверх persistent работает, так что камни что в persistent и в его огород можно местами покидать
Kirill
на что недавно нарвался дак https://github.com/bitemyapp/esqueleto/issues/49 - промахнёшься с (обратным) порядком on/join и ошибка придёт только из БД, даже не исключение от Esqueleto
Kirill
а так основная причина того, что пользуем persistent/esqueleto это MySQL, нормальные люди пользуют постгре и у них больше пространство для манёвра :)
Chris
А что постгресс дает, все равно же нужен DSL. Или для постгресса не нужен?)
Kirill
дак говорю - больше пространство
Kirill
ну с ходу могу назвать opaleye и hasql
Kirill
тока pg
Kirill
вроде ещё было что-то под pg и юзабельное
Kirill
но копаем мускул, так что по теме pg я не советчик
Chris
Я довольно плохо ориентируюсь в экосистеме, поэтому opaleye - это открытие для меня, спасибо)
Anonymous
На хаскелл вообще можно без выкрутасов просто кодить, не пытаясь каждый раз описывать программу как математическую модель?
Yurii
A64m
Можно, но зачем?
Alexander
@raventid я был
Alexander
esqueleto расширяет список запросов, которые можно сделать persistent-ом до минимально разумного уровня
Alexander
что вообще можно смотреть
Alexander
но я вообще не люблю type safe выкрутасы поверх sql и orm
Alexander
обычно это не работает
Kirill
а я наоборот перекатал несколько десятков запросов с mysql-simple на persistent/esqueleto несколько недель назад
Kirill
только вот порядок джойнов расстраивает а так хоть какой-то относительно безопасный код реюз когда общие куски запросов есть
Kirill
но осталась несколько ещё многоэтажных запросов которые не осилил :)
Andrey
IC
Лучше для какой задачи?
Alexander
Alexander
Или mysql не оптимайзит такое?
Misha
Или mysql не оптимайзит такое?
Я могу ошибаться, но с джойнами движки обычно делают так. Допустим у тебя есть A join B join C join D
1. Выполняется только то, что запросил: джойнить A и C никто не будет
2. Приоритет всегда расставляется так, что результат — таблица (то есть (A j B) j (C j D) не будет)
Misha
если мне кто-нибудь скажет, что это не так, будет здорово. Могу приложить линк на лекции из уни, но в интернетах пруф пока не нашел (ищу)
Kirill
да кодогенератор не может порядок проверять
Kirill
в обычном сикеле у тебя по тексту идут JOIN а за ним ON
Kirill
в esqueleto же они "оторваны" друг для друга, вроде как для композиционности
Misha
http://www.benjaminnevarez.com/2010/06/optimizing-join-orders/
Вот тут пишут что bushy не пользуются, потому что слишком много вариантов реордеринга
Kirill
в итоге можешь делать JOIN для A и B, а в ON у тебя будут C и D
Kirill
в тикете там всё вроде указано и линка на хаддоки, где ещё Фелипе задокументил косяк
Alexander
Misha
Alexander
bushy супердорого, да