для себя. Есть идея для небольшого пет проекта. Подскажите что там по стекам? Очевидно, что я еще далеко не так хорошо в ФП разбираюсь, как это нужно для cats или ZIO, но само собою стараться функционально я буду. Чистые функции, кейс классы, паттернматчинг, вот это все.
Наверное я все премешал, cats это вроде примитивы в замен стандартной библиотеки, хотя ZIO тоже, но там в виде доп. либы есть http сервер.
Что тогда взять, play? Наверное легче будет если это lightweight решение, а не что-то типа ruby on rails.
А вы на глаз и на свой вкус посмотрите zio и cats-effect, в зио прикручивается http4s и doobie, в лёрне помогут если что
Cats - это не взамен, это в дополнение к стд либе. В нем всякие теор.категорные вкусности вроде монад/полугрупп/моноидов и пр. Cats-Effect и ZIO это по факту рантаймы, окружения для сборки и исполнения эффектов. В качестве пробы пера можно взять плей, но лучше потыкать Akka-http/Akka-streams (чаще будешь встречаться с ними, как мне кажется). В качестве коннектора к бд возьмите slick.
Future я так понимаю ближе к ООП парадигме, но не прям совсем? Скала бекенд не на функцональщине вообще пишут?
Фьюча это чтобы по перфомансу был не руби, ооп не при чём, в джаве фьючи сейчас тоже повсюду
мммм нуууууу я примерно понимаю, что вы имеете в виду. С некоторой натяжкой можно сказать, что да, ближе. Future жертвует рядом достаточно важных вещей из функциональной парадигмы ради простоты использования и понятности для людей с не-фп бекграундом. Фьючи и в других языках есть, если что. Вполне на функциональщине его пишут:) И у нас, и за рубежом. Future-стэк просто проще, там про монадки не надо ничего знать, чтобы “написал и работает”
спасибо, так понятней намного, я пока и без монад буду счастлив, если оно заработает
ciris забыли
Ну надо знать про флетмап и форы, чтобы их композить. И сиквенс. И приколы с параллельным/последовательным запуском.
Или Circe. Что-то для жсонов в общем
я б вообще отказался от "умных" конфиг библиотек. Весть код с pureconfig, который я в своей жизни видел, очень быстро эволюционировал в месево.
то, что код превратился в месиво вряд ли является виной либы. с другой стороны, я уже не помню почему, но мне pureconfig тоже чем-то не зашел. а цирисом довольно все чисто выходит
так либы и нужны для того, чтобы с ними нормальный код получался чаще, чем плохой. Не разделяю мораль сишников "you are doing it wrong". Возможно, нужно изучить идеологию библиотеки, и все будет хорошо, но 1) на моей практике этого никто не делал 2) я сам этого делать не буду, если альтернатива - написать 30 строчек кода типа config.getString.
> на моей практике этого никто не делал может в этом проблема? нельзя же сказать что "либа Х не нужна потому что люди, с которыми я работал в ней не разбирались" в целом, выбор тулинга это дело личных/командных предпочтений. надо использовать то, чем удобнее и увереннее можно принести валуе, но при этом иногда смотреть по сторонам на разные подходы
короче, мое мнение - если есть примитивный конфиг, который 1 в 1 мапится на нормально выглядящий case class - можно использовать автодекодер. Если приходится использовать аннотации или вещи типа implicit kebabCase - лучше остановиться
и возможно это еще зависит от того, как хранятся конфиги. в моем случае все в env var'ах
Зачем грабли полобубитные советуешь?
потому что вкатываться постепенно надо
Правильно, постепенно, а не зигзагом
начать нужно с liftweb и play iteratees, получается
шоета я боюс гуглить
друзья slick
С play.api.libs.functional
Обсуждают сегодня