Vitaly
Интересно, кстати, что если бы к TypeInType предъявлялись нынешние требования к LH, то его никогда бы не утвердили. Раньше времена были посвободнее.
A64m
так принимают-то консенсусом. комитет тянет бай дизайн, если фича мало кому интересна в обеих смыслах, и в нее никто не хочет лезть как в случае QC и DV, она за месяц со свистом пролетает, если есть два человека с каким-то мнением о фиче - она увязает и обсуждается годами, даже если не особо и большая
A64m
A64m
нынешний процесс антифичевый в принципе
A64m
по новому процессу уже один релиз без фич вышел и весной еще один будет
Vitaly
Необязательно консенсусом, там есть механизм голосования, но его не любят
A64m
ну по факту консенсусом
Kirill
у кого-нить есть GHC 8.6.1?
A64m
у меня
Kirill
установленный стэком фейлит :doc со словами /bin/sh: haskell-docs: команда не найдена с русской локалью
Leonid 🦇
Kirill
что Nixos?
Kirill
а о том как :doc работает с не гейропейскими локалями
A64m
поставил на винду рекомендуемым методом (cinst ghc) в результате гхц без прав администратора не запускается
Kirill
GHCi скачаный стэком запущенный напрямую также фейлится
Andrei
Cheese
а что у нас есть веб-серверного, с простым высокоуровневым интерфейсом к БД а-ля persistent, с простыми шаблонами а-ля Hamlet, кроме, собственно, Йесода?
Cheese
для игрушечного проекта
Cheese
Йесод тоже ок, но вдруг есть что-то ещё проще?
Alexander
приделайте уже все к серванту, с документаций
Cheese
мне надо готовое и прямо сейчас
Alexander
там оно все есть, но хз где описанное
Alexander
на любителя правда, как и есод
Alexander
так то servant-blaze есть, но это не то, что нужно?
Yura
йесод скорее безысходность
Alexander
persistent - скорее самое простое для лаконичности и объяснения, но с сервантом его можно и использовать
Yura
я кроме него ничего не использовал
Yura
но он довольно простой
Alexander
кто знает foldlRows/ foldrRows стримятся в hasql?
Cheese
главный сайт языка рекламирует видео, в котором предлагается Spock + Spock-lucid
Ryner Reinhardt
Scotty предельно простой
Ryner Reinhardt
Правда в нем наверное нет норм инструментов
Alexander
цензура на марше если чо
Alexander
warp чистый тоже норм
Igor
на любителя правда, как и есод
А что из фреймворков хаскельных не на любителя? Я вижу выше servant рекомендуют как самый лучший выбор. Серьезно, хочется знать, что стоит использовать программисту со средним знанием хаскеля для user facing сервера если вдруг предьявится возможность на хаскеле писать.
Alexander
если нужно генерировать swagger, документацию, тесты быть RFC-compatible, поддерживать разные accepted content-type то servant очень хороший выбор
Alexander
у него есть проблемы, он может долго компиляться если 100600 endpoint-ов
Alexander
у него могут быть очень сложные^W длинные ошибки типов
Alexander
которые просто не нужно читать, а если видишь ошибку, то пытаться её упростить
Alexander
если нужно простой сайт на 1.5 endpoint-а, который пофи что отвечает в случае ошибки, то можно брать что-нибудь другое
Alexander
я обычно вообще начинал на warp чистом, но после того как несколько раз заметил, что я начинаю переизобретать servant - стал с него начинать
Alexander
вообще все поверх wai/warp
Alexander
я на есоде делал только цитатник, оно работало но мне не понравилось
Alexander
а зачем в споке стейт свой?
Igor
а зачем в споке стейт свой?
Не имею понятия. Весь мой опыт заключается в том, что год назад за полдня собрал сервер с простым json api и in-memory db для тестирования видеоигры (чтобы не к продакшну подключаться), сервер просто эмулировал аутентификацию и случайные данные отсылал клиентам. Я тупо следовал туториалу, и все как надо работало. Была какая-то проблема с хэдером при запросе из webassembly клиента (у нас игры 🙈) , я создал ишью на гитхабе и автор помог разобраться.
Alexander
вообще spock норм
Anonymous
꧁꧂ ꧁꧂ ꧁꧂ ꧁꧂ ꧁꧂ ꧁꧂ будет жить. Поприветствуем!
Dmitrii
у него могут быть очень сложные^W длинные ошибки типов
Это не проблема, как и долгая компиляция. Мы используем servant-generic (который был впилен прямо в servant с версии 0.14) и разбиваем группы эндпоинтов с одинаковым префиксом по разным модулям. Компилируется так же быстро, как и любые другие Haskell модули, проблем с длинными ошибками никогда не было. Цена за это: небольшой (совсем чуть-чуточку) бойлерплейт.
В данный момент я уже не вижу особых причин не использовать servant, а использовать другой фреймворк. Уж слишком много преимуществ из того, что ты описываешь свое Web API через тайплевельный DSL. Сложности бывают только тогда, когда надо инстансы нетривиальные писать, когда что-то не работает. Ну и использовать servant /= разрабатывать servant, для использования хватает самых базовых знаний в магии на типах в Haskell.
Vitaly
Ну в общем на фотке слева от Брайтнера Eric Seidel
Cheese
почему haddock может зависать на haskell-src-exts-1.20.2? то есть жрёт 100% CPU и за всю ночь ничего не сделал
Alexander
Это не проблема, как и долгая компиляция. Мы используем servant-generic (который был впилен прямо в servant с версии 0.14) и разбиваем группы эндпоинтов с одинаковым префиксом по разным модулям. Компилируется так же быстро, как и любые другие Haskell модули, проблем с длинными ошибками никогда не было. Цена за это: небольшой (совсем чуть-чуточку) бойлерплейт.
В данный момент я уже не вижу особых причин не использовать servant, а использовать другой фреймворк. Уж слишком много преимуществ из того, что ты описываешь свое Web API через тайплевельный DSL. Сложности бывают только тогда, когда надо инстансы нетривиальные писать, когда что-то не работает. Ну и использовать servant /= разрабатывать servant, для использования хватает самых базовых знаний в магии на типах в Haskell.
generic не пробовал, когда-нибудь посмотрю, но без ошибки могли напугать новичка, а разговор про них
Alexander
сколько у нас endpoint-ов в встречаются максимум?
Alexander
100+ ?
Alexander
я просто не уверен, что servant себя адекватно поведет
Kirill
чтот смутно вспоминается, что ещё hi-файлы генерились гигабайтные для таких вариантов
Kirill
и где-то это боком вылезало
Alexander
гигабайтные я только в ether помню, но вообще там проблемы есть
Alexander
ещё почти все generic подходы тормозили на 10+ полях
Alexander
мне интересно если разбивать Api на type MyApi = Api1 :<|> Api2 :<|> ApiN спасёт ли, или
все же обязательно будет делать middleware, которая кусок роутинга сделает.
Alexander
вообще я бы всем говорил используйте сервант ( и говорю)
Alexander
но там есть некоторая вербозность пока
Alexander
@A64m_qb0 хочешь на мои вопросы по линзам поотвечать?
Alexander
если есть json: {"foo": [bar,baz]} как вытщить bar?
Апач
на хаселе есть что - то типа akka-http / http4s или akka-streams?
Апач
Рестики педалить
Апач
и потоково данные колбасить
Alexander
для рестиков есть сервант, спок, и прочие звери
Alexander
протоколы есть как низкоуровневые так и другие
Alexander
вопрос подразумевает хорошее знакомство со скало экосистемой, чтобы показать конкретно, что что делает
Апач
ну, dsl для эндпоинтов, с экстракторами и прочим
Alexander
/shrug
Alexander
эти слова могут слишком много значить
Alexander
/me посмотрит документацию вышеперечисленных либ вечером
Alexander
я сделал через ^? key "foo" . nth 0 так норм?
A64m
норм
Alexander
дальше у нас есть key "foo" . _Array а как ему сказать, чтобы все в [] конвернтул в _Integral или упал?
Alexander
key "foo" . _Array . _Integral же не протатит ?