@scala_ru

Страница 1484 из 1499
Dim
24.05.2018
11:52:33
вчера ты аннелид, а сегодня тимлид
Хорошая шутка на стыке биологии и разработки)

Oleg
24.05.2018
11:55:35
стоп, это же не понв

Александр
24.05.2018
12:19:58
7 тоже помидор
ха-ха, с такими знаниями в Тинькофф не возьмут

M
24.05.2018
12:20:26
спасибо как нибудь без тинькова

Google
Mikhail
24.05.2018
12:26:53
Yaroslav
24.05.2018
13:13:55
Есть data = EitherT[Future, A, B] если А есть логика f(A) которая возвращает EitherT[Future, С, D] ecли B есть логика g(B) которая возвращает EitherT[Future, С, D] Как красиво сделать трансформацию EitherT[Future, A, B] -> EitherT[Future, С, D] ?

Aliaksandr
24.05.2018
13:22:34
bimap

Dmitry
24.05.2018
13:22:37
Bimap?

Oleg
24.05.2018
13:35:14
BitMap?

Yaroslav
24.05.2018
13:38:08
если просто bimap тогда получается EitherT[Future, EitherT[Future, С, D], EitherT[Future, С, D]]

Yaroslav
24.05.2018
13:41:23
flatMap(g).leftFlatMap(f)
типы не сходятся тогда

Oleg
24.05.2018
13:56:33
или скорее даже flatTransform

Google
Alexander
24.05.2018
13:59:56
если убрать EitherT, то data.flatMap(_.fold(f, g))

object foo { import scala.concurrent.Future import scala.concurrent.ExecutionContext.Implicits.global type A = Int type B = Double type C = String type D = Boolean val data: Future[A Either B] = ??? def f(a: A): Future[C Either D] = ??? def g(b: B): Future[C Either D] = ??? val result: Future[C Either D] = data.flatMap(_.fold(f, g)) }

Oleg
24.05.2018
14:00:28
если убрать EitherT, то data.flatMap(_.fold(f, g))
ну так я тоже самое написал

только конвертациями обвешал

чтобы решить эту задачу, а не "если взять другую задачу"

Alexander
24.05.2018
14:01:23
такой уже ты классный!

решил задачу

Oleg
24.05.2018
14:01:34
Alexander
24.05.2018
14:01:37
ЭТУ!

Oleg
24.05.2018
14:02:05
Недельку обещал переписать EitherT

уж он то любитель дописывать методы

Alexander
24.05.2018
14:02:20
без аллокаций? :)

Oleg
24.05.2018
14:02:26
Alexander
24.05.2018
14:03:02
вообще странно, что f и g возвращают EitherT, зачем его выставлять, по мне так чисто локальная штука, а возвращаться уже нормальный M[X Either B] должен

Alexander
24.05.2018
14:04:08
ну иногда нужно в приватном методе вернуть, чтобы по десять раз не врапать-анврапать, но в публичных сомнительно, имхо

Alexander
24.05.2018
14:04:48
поясни какой семантики?

Oleg
24.05.2018
14:06:24
Ну типа F[Either[E, X]] - это какая-то чепуха в твоём эффекте, а EitherT[F, E, X] - нечто с объявленным "особенным" типом ошибки

Google
Oleg
24.05.2018
14:07:08
Например вот у меня сваггер генерится особый на EitherT, который возвращается методом

Alexander
24.05.2018
14:07:15
для меня они эквивалентны, но во втором потроха котов протекают, но это субъективно, поэтому - пофиг

Oleg
24.05.2018
14:07:34
Типа у него есть специальный структурированный тип ошибки для какого-то статуса там 500 или другого

EitherT[ автоматически MonadError и с этим много методов его может в открытый мир отдавать

Wystan
24.05.2018
14:08:31
привет, не знаю, проходил ли ты вчера тест от медузы, но это не шакала
9 из 10. Придется в епам идти, там за свифт пояснят

Dmitriy
24.05.2018
14:16:17
А где за перл пояснят, я уже даже не знаю...

Dmitry
24.05.2018
14:16:45
Касперский

Alexander
24.05.2018
17:16:48
Слышал, что в Рамблере ещё жив ?

А рекламной сети их

Vasily
24.05.2018
17:17:37
Grigory
24.05.2018
17:18:15
там даж спарки были когда то (сча хз)

Nikolay
24.05.2018
20:07:20
https://www.youtube.com/watch?v=sFGnFKMSmL0

Alex
24.05.2018
20:08:20
вспомнилась песня из алладина

Nikolay
24.05.2018
20:08:23
он часто говорит про opaque types, хотя подразумевает type aliases. ведь это не совсем opaque types, верно?

а fibers в scalaz 8 в конечном счете так же на fork join-е основаны?

Oleg
25.05.2018
01:23:59
Dim
25.05.2018
04:31:49
Народ есть что-то типа Function.chain(preprocessors).apply(inputText) только не A => A а A => B ?

Dim
25.05.2018
04:33:34
Есть объект Function у него есть метод chain , судя по комментам писал Одерски

Google
Dim
25.05.2018
04:33:57
Given a sequence of functions f,,1,,, ..., f,,n,,, return the function f,,1,, andThen ... andThen f,,n,,.

Короче на вход получает Seq[A => A]

ну а дальше можно сделать apply к аргументу и получить приложение всех функций в Seq к входным данным.

Oleg
25.05.2018
04:35:49
угу, а ты что хочешь?

Dim
25.05.2018
04:35:56
Но мне хочется чтобы на выходе был не тип A, а другой тип B

Oleg
25.05.2018
04:36:21
ну просто скомпозь его с функцией

в самом конце

Admin
ERROR: S client not available

Oleg
25.05.2018
04:36:36
у тебя ведь не более одной может быть

или ты хочешь Seq[A => B] ?

Dim
25.05.2018
04:37:16
Да

Seq[A => B]

Oleg
25.05.2018
04:37:23
Как тогда это чей нить?

Одну функцию применил, получил B, с остальными что делать?

Dim
25.05.2018
04:39:04
а не туплю, на вход Seq[(тут сложная функция с несколькими параметрами в том числе и A) => A]

Dim
25.05.2018
04:39:40
То есть есть данные и есть обработчики этих данных, у них есть дополнительные данные для обработки.

Oleg
25.05.2018
04:40:26
Делаешь функции X => State[A, Y]

где X - все параметры, кроме A

И пропускаешь их через фор компрехеншон

Google
Oleg
25.05.2018
04:41:16
где X - все параметры, кроме A
а Y - все результаты, кроме A

тогда каждая функция будет иметь автоматически A на вход и на выход. И выход A из одного будет передаваттся в следующую

Юрий
25.05.2018
06:18:05
Народ, а нет ли такой манатки как опшн, только наоборот? Типа, если Some(a) - то закончили c a. Если None - то идём дальше?

λoλcat
25.05.2018
06:24:24
Alternative для опшен

Vladimir
25.05.2018
06:27:56
`Either[Whatever, Unit]`?

Denis
25.05.2018
06:28:34
Юрий
25.05.2018
06:28:57
Alternative для опшен
Чёт я не понял, как это мне поможет

Denis
25.05.2018
06:29:07
Очень удобно делать foldM с ранним выходом

λoλcat
25.05.2018
06:29:07
Подумой

Юрий
25.05.2018
06:29:23
Я вообще смотрел на всякие Continuations, но готовый есть только в скалази

Vladimir
25.05.2018
06:29:30
я уже затащил)

Юрий
25.05.2018
06:29:44
`Either[Whatever, Unit]`?
Видимо да, мой вариант

λoλcat
25.05.2018
06:32:03
List(none, 5.some, 6.some).unite это то что нужно?

Oleg
25.05.2018
06:32:49
это моноид, а не монадка

λoλcat
25.05.2018
06:34:30
Да, я не заметил что нужна именно монадка. Просили манатку, а у нас для этого слова отдельный смысл

Oleg
25.05.2018
06:34:42
ну в смысле нет

я имею в виду, что исходный запрос, несмотря на формулировку - это запрос на моноид, а не манатку

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