169 похожих чатов

Всем привет. Я немного разобрался с языком, хочу пописать практично

для себя. Есть идея для небольшого пет проекта. Подскажите что там по стекам? Очевидно, что я еще далеко не так хорошо в ФП разбираюсь, как это нужно для cats или ZIO, но само собою стараться функционально я буду. Чистые функции, кейс классы, паттернматчинг, вот это все.
Наверное я все премешал, cats это вроде примитивы в замен стандартной библиотеки, хотя ZIO тоже, но там в виде доп. либы есть http сервер.
Что тогда взять, play? Наверное легче будет если это lightweight решение, а не что-то типа ruby on rails.

25 ответов

7 просмотров

А вы на глаз и на свой вкус посмотрите zio и cats-effect, в зио прикручивается http4s и doobie, в лёрне помогут если что

Cats - это не взамен, это в дополнение к стд либе. В нем всякие теор.категорные вкусности вроде монад/полугрупп/моноидов и пр. Cats-Effect и ZIO это по факту рантаймы, окружения для сборки и исполнения эффектов. В качестве пробы пера можно взять плей, но лучше потыкать Akka-http/Akka-streams (чаще будешь встречаться с ними, как мне кажется). В качестве коннектора к бд возьмите slick.

во, вот такая картинка есть

Alex 🗽👇- Автор вопроса
Danila Romanov
screenshot во, вот такая картинка есть

Future я так понимаю ближе к ООП парадигме, но не прям совсем? Скала бекенд не на функцональщине вообще пишут?

Alex 🗽👇
Future я так понимаю ближе к ООП парадигме, но не ...

Фьюча это чтобы по перфомансу был не руби, ооп не при чём, в джаве фьючи сейчас тоже повсюду

Alex 🗽👇
Future я так понимаю ближе к ООП парадигме, но не ...

мммм нуууууу я примерно понимаю, что вы имеете в виду. С некоторой натяжкой можно сказать, что да, ближе. Future жертвует рядом достаточно важных вещей из функциональной парадигмы ради простоты использования и понятности для людей с не-фп бекграундом. Фьючи и в других языках есть, если что. Вполне на функциональщине его пишут:) И у нас, и за рубежом. Future-стэк просто проще, там про монадки не надо ничего знать, чтобы “написал и работает”

Alex 🗽👇- Автор вопроса
Danila Romanov
мммм нуууууу я примерно понимаю, что вы имеете в в...

спасибо, так понятней намного, я пока и без монад буду счастлив, если оно заработает

Danila Romanov
мммм нуууууу я примерно понимаю, что вы имеете в в...

Ну надо знать про флетмап и форы, чтобы их композить. И сиквенс. И приколы с параллельным/последовательным запуском.

Pavel
ciris забыли

Или Circe. Что-то для жсонов в общем

Pavel
ciris забыли

я б вообще отказался от "умных" конфиг библиотек. Весть код с pureconfig, который я в своей жизни видел, очень быстро эволюционировал в месево.

Evgenii Kuznetcov
я б вообще отказался от "умных" конфиг библиотек. ...

то, что код превратился в месиво вряд ли является виной либы. с другой стороны, я уже не помню почему, но мне pureconfig тоже чем-то не зашел. а цирисом довольно все чисто выходит

Pavel
то, что код превратился в месиво вряд ли является ...

так либы и нужны для того, чтобы с ними нормальный код получался чаще, чем плохой. Не разделяю мораль сишников "you are doing it wrong". Возможно, нужно изучить идеологию библиотеки, и все будет хорошо, но 1) на моей практике этого никто не делал 2) я сам этого делать не буду, если альтернатива - написать 30 строчек кода типа config.getString.

Evgenii Kuznetcov
так либы и нужны для того, чтобы с ними нормальный...

> на моей практике этого никто не делал может в этом проблема? нельзя же сказать что "либа Х не нужна потому что люди, с которыми я работал в ней не разбирались" в целом, выбор тулинга это дело личных/командных предпочтений. надо использовать то, чем удобнее и увереннее можно принести валуе, но при этом иногда смотреть по сторонам на разные подходы

Pavel
> на моей практике этого никто не делал может в эт...

короче, мое мнение - если есть примитивный конфиг, который 1 в 1 мапится на нормально выглядящий case class - можно использовать автодекодер. Если приходится использовать аннотации или вещи типа implicit kebabCase - лучше остановиться

Evgenii Kuznetcov
короче, мое мнение - если есть примитивный конфиг,...

и возможно это еще зависит от того, как хранятся конфиги. в моем случае все в env var'ах

Woof Собач
Зачем грабли полобубитные советуешь?

потому что вкатываться постепенно надо

Danila Romanov
потому что вкатываться постепенно надо

Правильно, постепенно, а не зигзагом

Danila Romanov
потому что вкатываться постепенно надо

начать нужно с liftweb и play iteratees, получается

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Карта сайта