
Kirill
10.01.2018
07:04:48
да скала не виновата ) это я вспоминаю кулстори из жвм чата что скалисты только и делают что сигнатуры обсуждают )

Henadz
10.01.2018
07:05:43
"в скала-чате только и разговоров, что о сигнатурах"

Nick
10.01.2018
07:05:54

Henadz
10.01.2018
07:05:58
достучаться до компилятора

Google

Nick
10.01.2018
07:06:04
Продумать систему типов

sherzod
10.01.2018
07:06:13
это лучше чем рантайм обсуждать)) значит решаем проблемы до него)

Kirill
10.01.2018
07:07:17
Ну вот, свои типы только обсуждают, а бузинесс валуе то где, а? я вас спрашиваю, миллионы далларов-то где?

Nick
10.01.2018
07:07:39

Grigory
10.01.2018
07:07:39
да в голанге, там ведь нет таплов
или есть

Nick
10.01.2018
07:08:06
Там есть таплы вроде

Kirill
10.01.2018
07:08:06
спроси у Ника, он спец

Grigory
10.01.2018
07:08:07
err, res :=

Nick
10.01.2018
07:08:29
Или они не совсем таплы и они хотят добавить

Aleksey
10.01.2018
07:59:34
котоны, а есть для акка стримов что-то подобное mvar из моникса? точнее даже, есть ли mvar для фьюч в составе акка стримов?

Vladimir
10.01.2018
08:02:47
кмк нет, может, он был, или есть, но не в стримах, а в каком-то akka-forgotten-legacy

Google

Vladimir
10.01.2018
08:03:14
но всегда можно написать его на акторах)

Dmitry
10.01.2018
08:03:21
В stm был
Давно уже нет

Aleksey
10.01.2018
08:06:52
чем-то более модным заменили?

Dmitry
10.01.2018
08:07:22
Не, выделили в отдельный проект
И вроде оно умерло
ScalaSTM — Library-Based Software Transactional Memory for Scala
https://nbronson.github.io/scala-stm/

Nick
10.01.2018
08:09:12

Aleksey
10.01.2018
08:11:01

Nick
10.01.2018
08:11:19
Хех. У меня так уже полгода )

KrivdaTheTriewe
10.01.2018
09:56:08

Alex
10.01.2018
10:08:08
под dos

Alexey
10.01.2018
10:08:59
гитхаб лежит?

Grigory
10.01.2018
10:09:33

Alex
10.01.2018
10:09:45
https://twitter.com/githubstatus/status/951033058202980352

Alexander
10.01.2018
10:22:08
У меня есть M[Seq[T]] и f: T => M[Option[U]] - нужно найти первый T, для которого найдётся U и вернуть этот Option[U]. Эдакий collectFirst высшего порядка. Что есть в котах для этого (тайпкласс)?

Mikhail
10.01.2018
10:26:37

Alexander
10.01.2018
10:27:45
f в базу ходит (M - это DBIO)

Oleg
10.01.2018
10:37:32

Alexander
10.01.2018
10:38:15
так он не higher order

Google

Alexander
10.01.2018
10:38:33
@typeclass trait Foldable[F[_]] { self =>
/**
* Left associative fold on 'F' using the function 'f'.
*/
def foldLeft[A, B](fa: F[A], b: B)(f: (B, A) => B): B

Oleg
10.01.2018
10:41:44
тут не нужно никаких хайерордер, тут нужно аккуратно свернуть через foldRight, либо foldM правильно сделав ленивый моноид

Alexander
10.01.2018
10:42:43
foldM выглядит как то что нужно, благодарю
только он не ленивый... А что ты имеешь в виду под ленивым моноидом?

Oleg
10.01.2018
10:49:50
ну короче мне кажется, что здесь одно из двух
либо делать foldRight и надеяться на стейсейфовость монады
либо делать tailRecM и специализировать для Seq

Alexander
10.01.2018
10:51:31
возможно стоит оставить рекурсивным методом и не заморачиваться...
def foldRight[A, B](fa: F[A], lb: Eval[B])(f: (A, Eval[B]) => Eval[B]): Eval[B] как-то сомнительно выглядит, я не могу покинуть M
tailRecM можно попробовать (а может и нет)

Mikhail
10.01.2018
11:20:40
@tvaroh на скорую руку за пару минут, я бы сделал так:
def kukuruku[K, T](io:IO[Seq[K]])(f: K => IO[Option[T]]):IO[Option[T]] = {
def collectFirst(seq:Seq[K]):IO[Option[T]] = {
seq.headOption match {
case Some(head) => f(head).map {
case None => ??? //prosto fail
case x => x
} orElse collectFirst(seq.tail)
case None => IO(None)
}
}
for {
seq <- io
x <- collectFirst(seq)
} yield x
}
но такого в катсах нету

Alexander
10.01.2018
11:21:10
примерно так я и сделал
благодарю за помощь, если в котах нету - моя совесть чиста

Mikhail
10.01.2018
11:21:59
@tvaroh на катсах? покажи как, я просто катсы не пользую, но интересно)

Alexander
10.01.2018
11:23:06
я не женерифицировал до collectFirst, просто рекурсия, но смысл тот же:
def findFirstMatchingMetrics(jobs: Seq[AnalysisJob]): DB[Option[Seq[AnalysisMetrics]]] =
jobs.headOption.fold((None: Option[Seq[AnalysisMetrics]]).pure[DB]) { job =>
val result = findMatchingMetrics(job)
result.flatMap(_.fold(findFirstMatchingMetrics(jobs.tail))(_ => result))
}

Anton
10.01.2018
11:25:53
Мимопроходил:
- None: Option[Seq[AnalysisMetrics]]
+ Option.empty[Seq[AnalysisMetrics]]
Почему: type ascription может приводить к триггеру implicit преобразований, явные конструкторы -- нет.

Alexander
10.01.2018
11:26:45

Oleg
10.01.2018
11:29:10
Можно заменить числа на 10009 (простое), чтобы убедиться, что второй вариант -стексейфовый, а первый - нет

Alexander
10.01.2018
11:44:45

Юрий
10.01.2018
11:58:08
Check out @webstandards_ru’s Tweet: https://twitter.com/webstandards_ru/status/951015822306238466?s=09

Aleksei
10.01.2018
11:58:27
очень тонкий намек? =)

Google

Admin
ERROR: S client not available

Юрий
10.01.2018
11:58:40
Самый тонкий

Alex
10.01.2018
12:20:54
ну а в целом да, будут видимо поначалу эвристики, типа тут резать там нет

Oleg
10.01.2018
12:30:46
setoid hell

Gleb
10.01.2018
13:29:59
ага
не только github, у bitbucket тоже проблемы https://status.bitbucket.org/

Natalia
10.01.2018
13:42:41
Всем привет!

Alex
10.01.2018
14:02:01
там всё изначально в сетоидах :)
в хотте обобщили до n-группоидов

Aleksey
10.01.2018
14:06:46

Denis
10.01.2018
14:14:27

Aleksey
10.01.2018
14:15:31
WTF
Хорошая практика в чатиках не говорить «привет», а говорить «привет. [вопрос]».

Denis
10.01.2018
14:15:44
А если нет вопросов?

Arthur
10.01.2018
14:16:09
то зачем писать что-то

Aleksey
10.01.2018
14:16:10

Daniel
10.01.2018
14:16:17
коралловый_аспид.жпг

Denis
10.01.2018
14:16:25
/toxic
Нет вопросов - молчи. Тут вам не гошечка

Henadz
10.01.2018
14:17:13
жоска, ежжи

Google

Arthur
10.01.2018
14:17:21
вот чат для флуда если че https://t.me/kotlin_lang

Nikita
10.01.2018
14:18:25
/toxicity_overflow

Vasily
10.01.2018
14:20:08
Да ладно, логотип прикольный

Aleksey
10.01.2018
14:22:42

Олег
10.01.2018
14:28:07

Wystan
10.01.2018
14:30:35
Сначала такие ссылки кидают, а потом удивляются по всему миру, чо русские такие хмурые ходят

Arthur
10.01.2018
14:39:03
я слышал что люди впринципе хмурые когда их время тратят впустую

Grigory
10.01.2018
14:42:36
вот поздаровались бы, а нет, стали выпендриваться же

Denis
10.01.2018
14:43:30