@scala_ru

Страница 713 из 1499
Diemust
31.05.2017
22:51:33
старый способ объявления анонимного класса

создания* наверно больше слово подходит

Alexandr
01.06.2017
06:16:20
Вот тут я потерялся. Почемуlazy теперь не нужен?

Google
Alexandr
01.06.2017
06:20:57
Можешь объяснить?

Grigory
01.06.2017
06:27:12
Можешь объяснить?
шаплез лейзи: https://github.com/milessabin/shapeless/blob/master/core/src/test/scala/shapeless/lazy.scala

Kirill
01.06.2017
06:29:43
ого, интересно почему не скалатестом тестируется

Alexandr
01.06.2017
06:30:29
Спасибо!

Kirill
01.06.2017
06:31:22
А тут есть такие, кто тоже тесты пишет с junit, а не скалатест?

Nick
01.06.2017
06:38:07
Arthur
01.06.2017
06:38:29
Specs2 лучше скалатеста

Kirill
01.06.2017
06:38:54
Чем лучше?

Arthur
01.06.2017
06:39:03
Больше сахара, типо beSome

Oleg
01.06.2017
06:39:30
я думал, что скалатест поглотил все остальные либы

Alexandr
01.06.2017
06:39:41
По-моему, даже по звездочкам specs2 популярнее

Arthur
01.06.2017
06:39:42
И матчеры привязаны к типам ( "123" should be 123) зафейлится в компайл тайме

Google
Arthur
01.06.2017
06:40:03
Скалатест не развивается особо даже

Юрий
01.06.2017
06:40:25
а specs2 есть под scalajs?

Kirill
01.06.2017
06:40:35
Да какая разница что там по звёздочкам ) Сабин вон вообще почему-то на junit пишет тесты, мне очень интересно было бы узнать почему

Oleg
01.06.2017
06:40:53
а в спекс2 можно юзать scalacheck овскую фигню?

Vladimir
01.06.2017
06:41:37
Oleg
01.06.2017
06:42:05
Co8UV3xWgAALxmN.jpg:large (1561×2048) https://pbs.twimg.com/media/Co8UV3xWgAALxmN.jpg:large

Kirill
01.06.2017
06:42:14
может не любитель сахарка?
хз, может там есть какие-то свои профиты, мне интересно потому что некоторые вещи которые мне приходится писать в тестах скалатест весьма плохо поддерживает

Oleg
01.06.2017
06:43:11
может не любитель сахарка?
мне кажется, когда ты написал Law для discipline, какая разница чем его запускать

Aleksei
01.06.2017
06:43:46
Я видел все три версии

Evgeniy
01.06.2017
07:20:45
http://underscore.io/blog/posts/2017/05/29/why-we-open-sourced-our-books.html

Oleg
01.06.2017
07:22:27
Наконец-то поконтрибьючу в Lift Cookbook

Aleksei
01.06.2017
07:22:28
Ну кстати да

Мое имя теперь будет в книжке про Cats лол

Alexandr
01.06.2017
07:26:01
Хорош же?

Aleksei
01.06.2017
07:26:54
но вообще в письме писали что опенсорсят как только коты 1.0 выйдут

Evgeniy
01.06.2017
07:28:05
вроде все тут https://github.com/search?q=topic%3Abook+org%3Aunderscoreio&type=Repositories

Nick
01.06.2017
07:38:15
@optician_owl я помню ты мне ссылку кидал на канал про функциональщину, можешь продублировать?

Daniel
01.06.2017
07:40:49
чегось?

знаю только хаскелль и зав типы

Google
Arthur
01.06.2017
07:42:29
Nick
01.06.2017
07:45:48
знаю только хаскелль и зав типы
Да не, было дело. Ладно в истории ютуба поищу

folex
01.06.2017
08:02:10
А тут вообще есть же модерация? Раньше вроде было, а последнее время не вижу.

?Ivan
01.06.2017
08:22:28
Не успеваешь их банить, они под другими никами всплывают

Aleksei
01.06.2017
08:23:58
Alexey
01.06.2017
08:28:43
банить инакомыслящих?

Grigory
01.06.2017
08:29:14
банить инакомыслящих?
надо поддерживать уровень токсичности.

Alexey
01.06.2017
08:29:32
а вы за ту рекламу marvel-dc

Grigory
01.06.2017
08:29:38
)) да

Alexandr
01.06.2017
09:28:12
Есть вот такая функция protected def paramToEnum[T <: Enum[T] : ClassTag](name: String): T = {.... } В ней через Option пытаюсь привести строку к enum и вернуть константу или null Компиллятор сообщает Error: Cannot prove that Null <:< T. .orNull Попытка подсунуть "мамой клянусь" Null <:< T не проходит, говорит, не знает <:< Помогите понять, почему каменный цветок не?

именно null - этот код частеньки из java вызывается. Требование такое :(

Alexey
01.06.2017
09:29:03
asIntanceOf

folex
01.06.2017
09:29:33
а вы за ту рекламу marvel-dc
и за ночной троллинг

Alexandr
01.06.2017
09:30:16
.orNull.asInstanceOf[T] падает

folex
01.06.2017
09:32:21
T :< AnyRef?

Alexandr
01.06.2017
09:32:59
(implicit k: <:<[Null, T])

Не получится, надо именно чтобы enum

вставить paramToEnum[Null <: T <: Enum[T] : ClassTag] не получилось. Но вот так, как выше с имплиситом работает :(

Буратино тупой, буратино не понимает, почему prove case class прямо в теле нельзя, а как имплисит можно

Grigory
01.06.2017
09:35:06
а что ты хочешь?

Google
Mikhail
01.06.2017
09:35:33
.orNull.asInstanceOf[T] падает
val enums = implicitly[ClassTag[T]].runtimeClass.getEnumConstants.asInstanceOf[Array[Enum[_]]] enums.find( _.name().equalsIgnoreCase(name) ) match { case Some(e) => e.asInstanceOf[T] case None => null.asInstanceOf[T] }

Mikhail
01.06.2017
09:37:13
@ScalaDev хотя стой, ты же сам наепался. тебе надо возвращать Enum[T]

тогда getOrElse(null) прокатит

Alexandr
01.06.2017
09:37:37
не прокатит : )

Компиллято тоже про отсутствие пруфов матерится.

Mikhail
01.06.2017
09:37:58
нет

Компиллято тоже про отсутствие пруфов матерится.
def paramToEnum[T <: Enum[T] : ClassTag](name: String): Enum[T] = { val enums = implicitly[ClassTag[T]].runtimeClass.getEnumConstants.asInstanceOf[Array[Enum[T]]] enums.find( _.name().equalsIgnoreCase(name) ).getOrElse( null) } оккупай компиляй на здоровье

Alexandr
01.06.2017
09:38:18
Ну, у меня ругается. null.asInstanceOf работает.Мне в голову не приходило нулл кастить, спасибо

Mikhail
01.06.2017
09:38:41
и так и так работает

Alexandr
01.06.2017
09:40:47
спасибо

Oleksandr
01.06.2017
09:44:48
тот же хак, но под другим углом: scala> implicit val foo = null.asInstanceOf[<:<[Null,Int]] foo: <:<[Null,Int] = null scala> implicitly[Null <:< AnyVal] res1: <:<[Null,AnyVal] = null

Alexandr
01.06.2017
09:47:32
Спасибо

Alexey
01.06.2017
10:12:58
@notxcain я тут решил порасдуплять реализацию контекста на монадах https://gist.github.com/notxcain/36eb32687b6b7ed83177721746d368a1 и чот у меня такое чувство, что код должен вернуть контекст == Map("ServiceB.res" -> "odd" или "even") Правильно же думаю?

Alexey
01.06.2017
10:23:01
я не очень секу на каком моменте мапы мержатся

Denis
01.06.2017
10:23:33
они мержаться в операции WriterT#flatMap

Которая требует чтобы контекст был моноидом, чем Map[String, String] и является

Daniel
01.06.2017
10:26:14
полугруппой скорее

Alexey
01.06.2017
10:26:15
ааа, ну ок то есть если у меня где то будет параллельное вычисление с контестом, я получу несколько версий контекста, которые потом надо мержить?

Google
Denis
01.06.2017
10:26:49
полугруппой скорее
там нужен ноль

Alexey
01.06.2017
10:29:12
или композиции такого рода вообще не предполагают такого использования?

Denis
01.06.2017
10:29:15
надо посмотреть

Посмотрел

если F поддерживает параллелизм - то и WriterT его поддерживает

Alexey
01.06.2017
10:31:01
дак будет две версии или одна? :)

Denis
01.06.2017
10:31:25
две которые потом сами смерджаться

Alexey
01.06.2017
10:33:57
окей, примерно понял что там происходит, спасибо :)

Denis
01.06.2017
10:34:35
Вся магия происходит в WriterT#ap def ap[Z](f: WriterT[F, L, V => Z])(implicit F: Apply[F], L: Semigroup[L]): WriterT[F, L, Z] = WriterT( F.map2(f.run, run){ case ((l1, fvz), (l2, v)) => (L.combine(l1, l2), fvz(v)) })

Хочу сразу сказать что Apply[Future]#map2 определен через flatMap, так что параллелизма там не будет.

Alexey
01.06.2017
10:36:36
ну на этом примере понятно что не будет

так же ведь будет? val a = someSimpleOperation .pure[F] .flatMap { res => context.put("ServiceA.step1", res.toString) .as(res * Random.nextInt(10)) } val b = a.flatMap { res => context.put("ServiceA.step2", res.toString) .as(res - Random.nextInt(5)) } val c = a.flatMap { res => context.put("ServiceA.step3", res.toString) .as(res + Random.nextInt(5)) } b.flatMap(c).flatMap { res => context.put("ServiceA.step4", res.toString) .as(res) }

Denis
01.06.2017
10:39:41
нет это будут две отдельные ветки

Alexey
01.06.2017
10:40:01
но потом же ведь они сливаются, не?

Denis
01.06.2017
10:40:07
стоп

вру

b.flatMap(c) - не компилится вообще

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