@scala_ru

Страница 798 из 1499
Oleg
05.07.2017
13:55:13
type FRes[X] = Future[Result[X]]

val result : FRes[String]

авось обманем scalac

Alexander
05.07.2017
14:00:22
Google
Oleg
05.07.2017
14:03:35
Неа.
сожалею, пройдите к трансформерам

вообще логично, он преобразует во flatMap

точнее в мап

у фьючи есть свой мап, и он не ищет имплиситной конверсии в синтаксисе

Alexander
05.07.2017
14:05:02
Да, тоже хотел написать.

Можно обёртку сделать, хех.

Oleg
05.07.2017
14:05:51
Можно обёртку сделать, хех.
и эта обёртка будет копией EitherT

Alexander
05.07.2017
14:06:52
Верно. Хорошо, что я могу без трансформеров обойтись.

KrivdaTheTriewe
05.07.2017
14:34:43
@pomadchin @gurinderu https://habrahabr.ru/post/332450/

Nick
05.07.2017
14:35:12
боян

статье года 2

Grigory
05.07.2017
14:35:34
он пишет про проблемы aufs

можно дропать сразу

Google
Grigory
05.07.2017
14:35:55
(ну типа аутдейтед проблема 2 годовалой давности)

хабр + сбер + aufs = успех

KrivdaTheTriewe
05.07.2017
14:37:41
так вы чо, не комментарии палите, а читаете?

Grigory
05.07.2017
14:38:29
ну я не читаю хабр; ток тут когда вбрасывают что-то

KrivdaTheTriewe
05.07.2017
14:39:27
ну я не читаю хабр; ток тут когда вбрасывают что-то
ну я вбросил, так что можно в комменты пройти

статье года 2
1 ноября 2016 года

Vadim
05.07.2017
15:31:17
Подскажите, почему EitherT.flatMap не получается переписать в for-comprehensioin? https://gist.github.com/Chicker/8a43fa7417a623b0a8b862af2b5b4119

Daniel
05.07.2017
15:33:20
вопрос дня)

Denis
05.07.2017
15:34:52
Подскажите, почему EitherT.flatMap не получается переписать в for-comprehensioin? https://gist.github.com/Chicker/8a43fa7417a623b0a8b862af2b5b4119
for { config <- eithConfig service = new GetInfoByIpServiceImpl(productionEnv) out <- EitherT.right(service.countryCode(config.ipAddress)) } yield out

Vadim
05.07.2017
15:35:51
Потому что ты оборачиваешь его в EitherT.right
Не, с flatMap все работает. Не работает с for-comp...

Denis
05.07.2017
15:36:49
ну у тебя же есть разница в том как написан вариант c flatMap и как написан вариант c for-comprehension

Vadim
05.07.2017
15:37:01
Хм, так работает)

Правда не очень красиво получается

Denis
05.07.2017
15:38:08
твой вариант с фором превращается после дешугаринга вот в это eithConfig.map { config => val service = new GetInfoByIpServiceImpl(productionEnv) service.countryCode(config.ipAddress) }

Правда не очень красиво получается
красиво это не про трансформеры

Vadim
05.07.2017
15:39:32
Хм, я всегда думал, что for - это sugar для flatMap, а не для map

Я думал, что for - это налог do-нотации из Haskell. Sugar для >>= (bind)

Denis
05.07.2017
15:40:27
ну это и про flatMap

Google
Denis
05.07.2017
15:40:34
просто у тебя этого нет в твоем for

то что ты пишешь в yield делается через map

если конечно не просто возвращаешь переменную из скоупа

так как больше одной <-

Vadim
05.07.2017
15:43:10
Ааа, все понял ! >> то что ты пишешь в yield делается через map Вот это я не понимал, я думал, что он то что я напишу в yield сам обернет в монаду EitherT, типа pure сделает

Denis
05.07.2017
15:45:01
неее ) слишком круто для нашего цирка )

но и pure бы тебе не помог

Denis
05.07.2017
15:45:53
потому что ты лифтишь F[A]

Vadim
05.07.2017
15:47:00
EitherT.right же лифтит )

Denis
05.07.2017
15:47:16
да, но ты же его явно не написал в своем примере

Vadim
05.07.2017
15:47:41
по идее, Either - right biased. for мог бы и догадаться)

for { config <- eithConfig service = new GetInfoByIpServiceImpl(productionEnv) out <- EitherT.right(service.countryCode(config.ipAddress)) } yield out А это по-красивее можно сделать? без промежуточного out?

Oleg
05.07.2017
15:49:15
по идее, Either - right biased. for мог бы и догадаться)
есть и просто lift https://github.com/typelevel/cats/blob/master/core/src/main/scala/cats/MonadTrans.scala#L12

т.е. можно .liftT https://github.com/typelevel/cats/blob/master/core/src/main/scala/cats/syntax/monadTrans.scala

но у меня обычно тип не выводит

а liftT[EitherT[?[_], AppError, ?]] выглядит хардкорновато

но можно просто засаммонить MonadTrans и юзать его методж

Vadim
05.07.2017
15:55:16
а что нужно import, чтобы liftT появился у Future?

Google
Oleg
05.07.2017
15:55:37
syntax.monadTrans._

Vadim
05.07.2017
15:56:58
что-то нету в cats.syntax.monadTrans (

Oleg
05.07.2017
15:59:04
что-то нету в cats.syntax.monadTrans (
удивительно, потому что выше ссылка на его исходник

версия котов?

Vadim
05.07.2017
15:59:51
а стоп, я только cats-core добавил в зависимости)

думал core обойдусь ;))

странно, все равно нет. версия сats 0.9.0

Oleg
05.07.2017
16:06:54
сорри

Admin
ERROR: S client not available

Oleg
05.07.2017
16:06:56
transLift

Vadim
05.07.2017
16:08:04


Oleg
05.07.2017
16:08:46
import cats.syntax.transLift._

Vadim
05.07.2017
16:09:29
в cats вообще нет MonadTrans, см скрин выше

Oleg
05.07.2017
16:10:04
да, я случайно со scalaz

в cats он называется TransLift

Vadim
05.07.2017
16:10:58


а на github есть

Oleg
05.07.2017
16:11:14
точнее назывался до https://github.com/typelevel/cats/commit/57d881974c0f2d4695749385e7603221bbf2c7bb

Vadim
05.07.2017
16:11:55
межу MonadWriter и MonadState должен быть MonadTrans ... а у меня его нет)))

Oleg
05.07.2017
16:12:21
ну я же кинул

Google
Oleg
05.07.2017
16:12:29
просто это свежий коммит, ещё не релизен

Vadim
05.07.2017
16:14:03
и package c именем transLift тоже нет

то есть, это не у меня глюки? а просто этих файлов еще нет в 0.9.0?

Oleg
05.07.2017
16:21:13
Vadim
05.07.2017
16:23:52
Какую-то ерунду пишет компилятор: could not find implicit value for parameter extract: cats.syntax.TLExtract[cats.syntax.TLExtract.SingletonMT{type MT[F[_], B] = MT0[F,B]},cats.syntax.TLExtract.SingletonM{type M[B] = scala.concurrent.Future[B]}] [error] } yield service.countryCode(config.ipAddress).liftT

Oleg
05.07.2017
16:24:20
но у меня обычно тип не выводит

а liftT[EitherT[?[_], AppError, ?]] выглядит хардкорновато

Denis
05.07.2017
16:26:15
yield service.countryCode(config.ipAddress).liftT

так нельзя делать )

ну можно, вот только бесполезно

Oleg
05.07.2017
16:26:53
yield service.countryCode(config.ipAddress).liftT
блин я даже не заметил

зачем ты опять liftT в yield засунул?

Denis
05.07.2017
16:27:15
for { ... out <- service.countryCode(config.ipAddress).liftT } yield out

Vadim
05.07.2017
16:30:06
ну можно, вот только бесполезно
хочу от out избавиться)

Denis
05.07.2017
16:30:25
сорян

это к Мартину

https://spring.io/blog/2017/07/05/introducing-spring-cloud-function

вроде не первое апреля

Vadim
05.07.2017
16:32:39
с liftT ерунда какая-то получается, оставлю лучше явный EitherT.right

Denis
05.07.2017
16:33:11
ну да или можешь импортнуть import EitherT._ и писать просто right

Vadim
05.07.2017
16:34:11
ага, всем спасибо)

Страница 798 из 1499