
Alexey
13.07.2017
09:40:59
в операциях над коллекциями почти всё сделано через мутабельные типы

KrivdaTheTriewe
13.07.2017
09:42:08
собственно я тему и поднял о локальной мутабельности
хотя я думаю , в будущем компилятор сможет оптимизировать мою версию

Alexey
13.07.2017
09:43:25
Раз уж о коллекциях заговорили.
Почему Views " are one of the lesser-used features " ?
классная же штука, нет?

Google

Oleksandr
13.07.2017
09:50:28
классная, если тебе, например, из 100000 элементов надо обработать до 100, по какому-то заранее неизвестному кондишну, и не хочешь фильтровать все
что довольно редкий случай, как по мне

Bulat
13.07.2017
09:51:55
основная проблема с вьюхами, что можно незаметно использовать какую-нибудь функцию, которая материализует вьюху. И компилятор не ругнется

Alexey
13.07.2017
09:52:00
ну сокращение создания промежуточных коллекций
хотя наверно случаи когда .map(...).map(...)... реально нужны редки
разве не только на .force они материализуются?

Bulat
13.07.2017
09:52:39
там половина методов в итоге сводится к материализации промежуточного состояния. И нужно хорошо понимать, что можно делать, а что нет
нет, не только
можно, к примеру, сделать какой-нибудь groupBy
и это тоже будет форсить

Alexey
13.07.2017
09:53:41
спасибо

KrivdaTheTriewe
13.07.2017
09:55:57
Апач спарк одна большая вьюха

Alexey
13.07.2017
09:56:44
mindblowing

Oleg
13.07.2017
10:03:03
View по сравнению с итератором хорош только тем, что он помнит, что он внутри имеет Seq

Google

Oleg
13.07.2017
10:04:16
Иногда сам является Seq в связи с этим
Но для мапов, флатмапов, фильтров и т.п. это не нужно
А вот тот дизайн, про который Петрашко в скалалазе рассказывал уже гораздо круче. Где просто по дефолту для всего используют вьюхи, которые потом макросом раскручиваются в циклы
Читай (скопипастено с rust)

KrivdaTheTriewe
13.07.2017
10:08:30
э т где использовали хитрый линкер ?

Oleg
13.07.2017
10:13:47

Nikita
13.07.2017
10:38:40
сижу такой на скале 2.11.8 никого не трогаю, пишу себе паттерн матчи, и потом замечаю что компилятор не всегда выдает предупреждение что не все случаи обработаны, попробовал то же самое на 2.12.2, там все ок
https://scastie.scala-lang.org/OJMmjSjXRtO82AGXYpoS0g

Oleg
13.07.2017
10:45:47
ааа т.е. нет

Nikita
13.07.2017
10:50:20
печалька, я не ожидал такой подставы от скала компилятора, но радует что хотяб починили в 2.12

Alex
13.07.2017
10:50:50
2.11.9 же вроде не рекомендуется, надо сразу 2.11.11

Nikita
13.07.2017
10:51:31
в 2.11.11 это тоже не работает
там в примере можно выбрать версию скалы)

Oleg
13.07.2017
10:52:54
иди кодь на своём окамле, если такой безопасный
у нас в скале, все в состоянии сами свои матчи проверить

Nikita
13.07.2017
10:54:25
о я тебя вспомнил, ты тут самый токсичный

Oleg
13.07.2017
10:55:03
нет

Nikita
13.07.2017
10:55:12
это я так тоже пошутил

KrivdaTheTriewe
13.07.2017
10:55:17

Google

Nikita
13.07.2017
10:56:01
я не в курсе что там за история с выводом типов, нытьем и окамлом, но здесь мне кажется попроще случай - есть туплы которые кейс классы, для них норм работает патмат, создаешь свой класс и все давай удачи

Oleg
13.07.2017
10:57:30
патмат не столь прост, как кажется. В особенности, если учитывать как в скале сделан unapply

Daniel
13.07.2017
10:58:47
слава богу еще не требуете, чтоб работало по спеке языка с | и прочим

Oleg
13.07.2017
10:59:05

Nikita
13.07.2017
11:02:29

Daniel
13.07.2017
11:03:08
нет
это к тому, что по спеке языка нужно поддерживать гораздо более сложные конструкции, но нет-с
и даже ишью заводить на это не стали

Oleg
13.07.2017
11:04:26

Daniel
13.07.2017
11:04:53
в 2.12 кстати не проверял, попозже гляну

Oleg
13.07.2017
11:05:08
Так, а что не работает с | ?

Daniel
13.07.2017
11:10:49
Pattern1 { ‘|’ Pattern1 }

Oleg
13.07.2017
11:11:07

Daniel
13.07.2017
11:12:24
sealed trait T
case class A(a: Int) extends T
case class B(b: String) extends T
val a = A(1)
val b = B("stroka")
def f(t: Any) = t match {
case A(x) | B("stroka") => "yohoo"
case _ => "any"
}
если конкртеное значение будет вместо x, то ок
с переменной уже не понимает

Oleg
13.07.2017
11:14:21
case A(_)

Daniel
13.07.2017
11:15:40

Oleksandr
13.07.2017
11:16:00

Daniel
13.07.2017
11:16:02
по описанию языка вполне можно подставить вместо паттернс

Oleksandr
13.07.2017
11:16:04
вроде все работает

Google

Daniel
13.07.2017
11:16:28

Oleksandr
13.07.2017
11:16:49

Daniel
13.07.2017
11:16:54
да

Oleksandr
13.07.2017
11:17:34
да
scala> def f(t: Any) = t match {
case A(x) | B("stroka") => "yohoo"
case _ => "any"
}
def f(t: Any): String
scala> f(A(1))
val res7: String = "yohoo"
scala> f(B("stroka"))
val res8: String = "yohoo"
scala> f(B("strok"))
val res9: String = "any"
scala> f(A(2))
val res10: String = "yohoo"

Daniel
13.07.2017
11:18:19
забавно, в скасти не пашет

Oleksandr
13.07.2017
11:18:40
дотти наконец-то завезли в brew, через него смотрю

Daniel
13.07.2017
11:18:48
а-а

Oleksandr
13.07.2017
11:19:35
кстати, очень круто сделано редактирование мультистроки, типа def (f) ...
сразу все выражение можно менять, а не построчно, как в scala2

Юрий
13.07.2017
11:37:40
https://www.jetbrains.com/research/devecosystem-2017/scala/
37% скала разрабов пользуется спрингом.
Кто все эти люди?

Admin
ERROR: S client not available

Nikita
13.07.2017
11:39:04
а такой вопрос, есть в скала компиляторе -Ywarn-numeric-widen, потом такой еще добавляешь -Xfatal-warnings, и идешь писать тест
list1 must have size list2.size, и оно не скомпилится, так как size(expectedSize: Long), выбрасывать scalatest теперь?

Denis
13.07.2017
11:39:21
Не хочу даже знать

Юрий
13.07.2017
11:40:07

Denis
13.07.2017
11:40:34
Какой то спаркжава еще используют для хттп, первый раз услышал о нем

KrivdaTheTriewe
13.07.2017
11:40:51

Nikita
13.07.2017
11:41:19
Юзай assert
ну есть и проще вариант, я просто хотел матчеры из поставки юзать

Grigory
13.07.2017
11:41:20

Nikita
13.07.2017
11:41:43
у какой такой коллекции в скале size/length возвращает Long?

Google

KrivdaTheTriewe
13.07.2017
11:41:45

Nikita
13.07.2017
11:43:07
как можно говорить о скала бигдате если у тебя коллекции Int размер отдают

KrivdaTheTriewe
13.07.2017
11:43:25

Nikita
13.07.2017
11:43:32
перехожу на монгу...

KrivdaTheTriewe
13.07.2017
11:45:03
он по другому назывался, просто спарк :) но видимо им пришлось ребрендинг сделать

Nikita
13.07.2017
11:47:26

Vladislav
13.07.2017
11:47:50
Я не раз рекомендовал разным людям, не спринг же им предлагать посмотреть

KrivdaTheTriewe
13.07.2017
11:49:10

Vladislav
13.07.2017
11:49:32
частично да

KrivdaTheTriewe
13.07.2017
11:49:37

Vladislav
13.07.2017
11:50:13
схема упростилась, но если ты про акторы и скалу - то да, кол-во кода увеличивается

KrivdaTheTriewe
13.07.2017
11:50:36

Vladislav
13.07.2017
11:51:00
все новые проекты/сервисы принято писать на scala/akka-http
но речь про яндекс вертикали)

KrivdaTheTriewe
13.07.2017
11:51:44

Vladislav
13.07.2017
11:52:09
это кто?

Daniel
13.07.2017
11:52:34

Vladislav
13.07.2017
11:52:58
я могу только за вертикали говорить, это авто/автору, недвижка, работа и путешествия
большая часть сервисов, имхо, на скале

KrivdaTheTriewe
13.07.2017
11:53:38
Вообще очень хотелось бы простых докладов про построение подобных вещей на скала стеке, книжек мало, и всё как-то варится внутри конторы) ремесло

Vladislav
13.07.2017
11:54:57
я наоборот думал всё доделать полнотекст для йоктодб и доклад по этому запилить, тк думал/думаю что изи доклады это так себе идея...