@scala_ru

Страница 1174 из 1499
Vadim
28.12.2017
16:19:14
помогло реальни.
а какая версия? тянет на ишью либо в акка, либо сбт)

Mikhail
28.12.2017
16:22:12
а какая версия? тянет на ишью либо в акка, либо сбт)
на разных, если руками не указал где-нибудь стримы, то оно падает в рантайме

Daniel
28.12.2017
16:25:35
кто-нибудь может подсказать свежие скаловые ноутбуки? спарк не сдался, если что. jupyter-scala вылезает в поиске, но он как-то вяло поддерживается, на 2.11 и с амонитом (который не обучен всепоучающим китайцем жить в такой среде)

Google
Daniel
28.12.2017
16:28:14
надо глянуть что-то забыл про него, на работе его аналитикам впаривают, хотя им пользоваться больнее

Dmitry
28.12.2017
16:31:28
https://toree.apache.org

Daniel
28.12.2017
16:34:46
все на спарк завязаны и 2.11 лан, видно 2.12 это фантастика

Dmitry
28.12.2017
16:40:58
Ну может как-то собрать с 2.12

Roman
28.12.2017
16:42:19
У jupyter-scala вроде есть билды с 2.12

И в инстал-скрипте написано "поменяйте тут для 2.12"

Daniel
28.12.2017
16:53:17
угу, нашел

но из-за аммонита придется видно в виртуалке подымать

KrivdaTheTriewe
28.12.2017
16:55:29
А докер ?

Daniel
28.12.2017
16:55:47
на венде лучше виртуалку

тем более мне не надо это никуда деплоить, толку с докера 0

Alexander
28.12.2017
17:03:52
уместно ли попросить не употреблять слово "хер" в подкасте? А то ребёнок слышит, не айс

Google
Alexander
28.12.2017
17:04:32
благодарю )

Grigory
28.12.2017
17:04:36
этот выпуск 18+

Nikita
28.12.2017
17:06:29
*Herr

Daniel
28.12.2017
17:06:42
*Herr
поправка на акцент

Igor
28.12.2017
17:14:18
Oleg
28.12.2017
17:15:11
скалалулзом

Kirill
28.12.2017
17:16:16
бенефис юмора помадчина

Oleg
28.12.2017
18:10:41
@clayrat Насколько кошерно называть коэффекты атрибутами?

Alex
28.12.2017
18:10:57
аннотациями наверное еще можно

но "коэффект" всё таки предполагает активное участие системы типов

вообще наверное есть какой то примитив или их набор, типа "достать из контекста", на основе которого уже можно внутри самого языка или ядра описать имплициты, имплицитные функции, капабилитэ и прочее

или просто что то типа OI комонады впаянной в рантайм

sherzod
28.12.2017
19:10:13
кто-нить использовал visualvm profiler для профайлинга запущенного в sbt console?

sampling работает. а в профайлере пусто

Daniel
28.12.2017
19:18:22
jmc

visualvm мертв

sherzod
28.12.2017
19:23:14
Жив вроде https://github.com/oracle/visualvm/commits/master класс неверно указал

Igor
29.12.2017
06:37:42
Как отсортировать Seq или что-угодно-еще с указанием порядка asc/desc?) #идиотские_вопросы_игоря

Google
Alexey
29.12.2017
06:40:30
http://www.scala-lang.org/api/2.12.4/scala/collection/immutable/Seq.html#sortWith(lt:(A,A)=>Boolean):Repr

Kirill
29.12.2017
06:40:41
написать implicit ordering для того, то хочешь? ну или sortWith

пацаны, что можно сделать с кодом, который с развесистыми if-else-ами? например, с вот таким чудом: https://scastie.scala-lang.org/Z1kkurat/FINIn0KJR9S6GmX6Vr9rdA

Пытаюсь придумать, как это можно переписать, чтобы было нагляднее, понятнее, и прочая-прочая

Aleksey
29.12.2017
06:48:47
да норм код. это было пходим кодом, если бы вверух стояло пару варов и код в этих ифах бы в них что-нибудь обновлял.

а так по моему все наглядо.

Kirill
29.12.2017
06:50:40
Неа, вот как раз от варов-то я везде избавился, мне не нравится то, что там получается такой вот хадукен, где в самом-самом конце приходится не забывать, что тебе нужно в кач-ве результата вернуть все склеенные seq1...seqN

И где-то ошибиться и напечатать не ту переменую очень просто (

Daniel
29.12.2017
06:55:15
if (true) 7 else 42 а что ты здесь сделаешь? Тебе везде нужно вернуть значение одного типа. Пиши такой код только по вторникам, тестируй.

Kirill
29.12.2017
06:56:52
Я не знаю, может быть есть какой-то волшебный подход или структурка данных, который мне позволит вот так агрегировать результаты, передавать их дальше по коду, а если условие не выполнено - возвращать какие-то значения, которые были получены на предыдущем этапе

Kirill
29.12.2017
06:59:02
if(not ...) return doBadThings1 if(not ...) return doBadThings2 и так далее?
Да оно так примерно и есть, только вот там, где нужно на очередном этапе при выполнении условий вернуть все предыдущие значения и не бежать дальше по ифам — надо помнить где и что как называется в предыдущем коде

Типо мы до конца пытаемся как-то обработать данные, и если на одном из этапов это получается - возвращаем всю ту информацию, что мы получили, пытаясь обработать. Если же не получается ни на одном из этапов - возвращаем дефолтные значение

Kirill
29.12.2017
07:07:49
Writer + хитрый Either?

Kirill
29.12.2017
07:08:42
Как вариант, но чёт я не хочу пока тянуть котов ради такой не очень большой штуки

и either будет настолько хитрый, что игра возможно не будет стоить свеч

Kirill
29.12.2017
07:09:34
Ну да, возможно

Это даже не Either будет, а пара с текущим и предыдущим значением

Kirill
29.12.2017
07:10:29
во-во

Google
Kirill
29.12.2017
07:10:43
ну нах, короче, и так сойдёт, там 40 строчек кода в итоге выйдет

Kirill
29.12.2017
07:11:03
И то верно)

Kirill
29.12.2017
07:13:53
Берял
29.12.2017
07:14:07
это как же надо постараться, чтобы ни одну либу с котами не заюзать

Daniel
29.12.2017
07:14:07
Ну можно переписать с патматом простым ведь?

Kirill
29.12.2017
07:14:35
А в итоге получится то же самое

Admin
ERROR: S client not available

Kirill
29.12.2017
07:14:40
меня ведь не сами ифы смущают

Kirill
29.12.2017
07:20:28
Во, я понял что нужно: data FinishedT m a = Finished { isFinished :: Boolean, value :: m a }

И состекать это с Writer

Но не факт что это того стоит)

Kirill
29.12.2017
07:22:18
)))

Igor
29.12.2017
09:57:38
А можно ли Traversable по би-предикату вида (T, T) => Boolean разбить на группы?

sherzod
29.12.2017
09:58:32
sliding и partition может

List(1, 2, 3, 4, 5).sliding(2).partition{ case List(a, b) => (a + b) % 2 == 0 }

Igor
29.12.2017
10:01:23
List(1, 2, 3, 4, 5).sliding(2).partition{ case List(a, b) => (a + b) % 2 == 0 }
sliding по два элемента берет, да?

sherzod
29.12.2017
10:01:30
по сколько укажешь

Igor
29.12.2017
10:01:56
Правильно понял, что потом идет "смещение" выбранных элементов на один и проблем с четноостью (лол) не будет?)

sherzod
29.12.2017
10:03:39
ну в зависимости от того как именно нужно скользить) можно вторым аргументом это указать

Google
Igor
29.12.2017
10:04:52
Окей. Последний вопрос на сегодня – в mutable.Map можно ведь в к-ве ключа null закинуть?

sherzod
29.12.2017
10:05:16
cобес что-ли проходишь)))

Igor
29.12.2017
10:06:02
Не, пишу стремный код в свое удовлетворение :) Раскидываю данные из json для сохранения в neo4j на ноды с вынесением сложных полей в отдельные ноды рекурсивненько, нужно неприятные большие цепочки группировок-маппингов-прочей-гадости делать, мозги плавятся.

sherzod
29.12.2017
10:07:55
можно закинуть, но хрен знает насколько это на уровне контракта закреплено. точно не нужно)

Igor
29.12.2017
10:09:20
Есть что-то типа кучи деревьев, нужно их разгруппировать по нодам-предкам чтобы потом в бд закидывать и сразу связывать предка со всеми детьми. Логично, удобно и не чревато никакими плохими вещами сделать для корневых нод ключ в мапе null и не сношать себе мозг.

sherzod
29.12.2017
10:10:18
а тип ключа какой? если строка логичнее взять ""

Igor
29.12.2017
10:12:39
а тип ключа какой? если строка логичнее взять ""
Не, тип ключа - собственно такой же как и тип данных, нода. Дерево же.

Aliaksandr
29.12.2017
10:15:11
господа, возможно, кто нибудь поможет совладать с компилятором и подскажет фикс, для того, чтобы все заработало ? не могу понять, почему имплисит для Monad[Compose[Future, Option]#F] находится, а для UserAlg[Compose[Future, Option]#F] - нет https://scastie.scala-lang.org/Exbfg1RFSCqND29dHTLDww

можно заставить работать добавлением еще одного имплисита, но как то не особо хочется - возможно есть более элегантный способ implicit def userInterpreter1[F[_], G[_]](implicit M: Monad[Compose[F, G]#F]): UserAlg[Compose[F, G]#F] = userInterpreter0[Compose[F, G]#F]

Aliaksandr
29.12.2017
13:52:08
круто, спасибо, а можно вкратце, почему так работает?

Mikhail
29.12.2017
14:02:52
круто, спасибо, а можно вкратце, почему так работает?
Потому что зав типы в скале не полноценны. Есть разные ограничения. Есть места в которых вычисление останавливается. Здесь помогла простая изоляция вычислений. type KOKOKO[K] = Compose[Future, Option]#F[K] - сначало вычисляется KOKOKO, а UserAlg[Kokoko] - это уже очень простой тип, потому что UserAl вычислен и Kokoko тоже.

Aliaksandr
29.12.2017
14:03:59
понятно, еще раз спасибо

Kirill
29.12.2017
17:38:19
@yourNightCurator нет, не печалит))

а почему удалил)

Александр
29.12.2017
17:42:10
не люблю пошлость, а мой вариант был уже предложен

Kirill
29.12.2017
17:43:31
А почему пошлость? я не прочитал до конца

Александр
29.12.2017
17:45:14
там был быстрый выход по первому условию через return чтобы понизить вложенность, но это java++ way

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