
Oleg
21.02.2017
08:11:07
и везде есть один набор гарантий и одно понимание, что есть Foldable. Не настолько сложная абстракция
и здесь такой же https://github.com/purescript/purescript-foldable-traversable
Приведи пример, где Foldable слабее
Где эта вселенная?

Google

Mikhail
21.02.2017
08:13:48

Oleg
21.02.2017
08:14:04
в хаскельной вселенной Foldable и есть Iterable
просто это один класс с одним обязательным методом на выбор, а не два интерфейса с тремя, как в ООП, поэтому абстракция проще выглядит

Mikhail
21.02.2017
08:21:42
в хаскельной вселенной Foldable и есть Iterable
это ты сам придумал?
https://hackage.haskell.org/package/iterable-3.0/docs/Data-Iterable.html
в хаскеле действительно бедный итерабл, вся концепция которого ограничивается наличием сайза, фолда и мапа(внезапно - это уже говорит о том, что фолдабл не равномощен итераблу даже в хаскеле) - остается только посочувствовать тем кому приходится часто есть кактусы.
однако мне не понятно, почему ты считаешь, что итерация(и траверсинг - как частный случай однонаправленной итерации без остановок) и аггрегация (и фолд как частная реализация) - есть одно и тоже

Oleg
21.02.2017
08:24:17
траверсинг в FP это не однонаправленная итерация без остановок, это способность коллекции восстановить свою структуру, собрав эффект во время восстановления
а считаю я потому что однопоточная Аггрегация и Итерация равносильны в случае существования ленивых вычислений


Mikhail
21.02.2017
08:27:48
https://hackage.haskell.org/package/base-4.9.1.0/docs/Data-Traversable.html

Oleg
21.02.2017
08:27:52
и показал это в сброшенном тобой исходнике. Если у тебя есть контрпример

Mikhail
21.02.2017
08:27:53
Class of data structures that can be traversed from left to right, performing an action on each element.

Oleg
21.02.2017
08:27:59

Mikhail
21.02.2017
08:30:20
и даже после этого ты продолжаешь считать, что я не прав в "траверсинг - есть частный случай однонаправленной итерации без остановок", и что в траверсинг заложено нечто большее нежели то, что указано в предложении "Class of data structures that can be traversed from left to right, performing an action on each element." ?

Google

Mikhail
21.02.2017
08:30:27
ну мне пожалуй нечего добавить)


Oleg
21.02.2017
08:36:57
и даже после этого ты продолжаешь считать, что я не прав в "траверсинг - есть частный случай однонаправленной итерации без остановок", и что в траверсинг заложено нечто большее нежели то, что указано в предложении "Class of data structures that can be traversed from left to right, performing an action on each element." ?
несомненно, ведь ты скинул ссылки на определения, на которых основываются мои утверждения
твои рассуждения содержат ряд слов, применяющихся в отличающемся смысле в Haskell, всё сегодняшнее утро я был мотивирован именно желанием объяснить этот смысл
"обход структуры данных" означает именно способность понять её внутрееннее устройство, гораздо больше, чем
просто получить элементы
"действие" означает некий эффект. Этот "action" употребляется совсем не в том смысле, как side-effective вызов в ООП, а именно последовательное накопление эффекта в более абстрактном смысле
"остановка" легко делается в случае лениво-устроенных структур, поэтому ни у Foldable. ни у Traversable нет обазательства "без остановки"
к примеру функция elem здесь https://hackage.haskell.org/package/base-4.9.1.0/docs/Data-Foldable.html
она несомненно "остановится", когда найдёт первый подходящий элемент
вот пример того, что она может найти элемент в бесконечном списке http://codepad.org/cxFh7RKW


Nikolay
21.02.2017
15:02:06
https://www.owcdigital.com/DEC/?utm_source=google&utm_campaign=projectranger&utm_medium=banner&gclid=CK_WmdaRodICFQlkGQodHVQKuw - это шутка...или нет?

Denis
21.02.2017
15:05:57
DAFUQ!!?
Кастомный апгрейд прошки?

Nikolay
21.02.2017
15:06:53
вроде как да
не понимаю
это супер-донгл, который позволяет тебе превратить макбук 2016 года в макбук толщины 2012 года

Sergey
21.02.2017
15:08:36
фьючеры и таски в скале работают как корутины?

Nikolay
21.02.2017
15:08:42
судя по картинке слева - подключается он в один из usb портов

Sergey
21.02.2017
15:09:18
да не, просто интересуюсь

Oleg
21.02.2017
15:33:39

Nikolay
21.02.2017
15:34:14
но таски не работают как фьючеры

Oleg
21.02.2017
15:36:07
с другой стороны, если бы в скале какой-то обкуренный человек решил попробовать со всеми десятками реактивных стримов в скале конкурировать корутинами
они бы работали как таски

Google

Oleg
21.02.2017
15:36:52
и даже в котлине они работают как таски

Sergey
21.02.2017
15:58:19
ну таски же в одном потоке выполняются с переключениями контекста?
или ForkJoinPool и поехали?

Alex
21.02.2017
16:18:43
там M:N вроде
@notxcain конкурент либератору https://github.com/47deg/freestyle

Denis
21.02.2017
16:25:01
Да знаком )

Oleg
21.02.2017
16:40:50
Только непонятно. Вроде бы Coproduct в реализации @module можно было бы заменить на sealed trait со сгенерированными вручную Inject, или нет?
Или вообще обойтись затеганными типами

Nikolay
21.02.2017
19:14:44

Oleg
21.02.2017
19:55:33
учитывая, что реализации генерятся макросом на базе алгебр, генерящихся другим макросом в той же либе, он мог бы просто написать свой Inject, пробегающийся паттерн-матчем по всем входящим trait-ам

Oleg
21.02.2017
19:58:11
Это помогло бы избежать сотни слоёв Coproduct(Left(Coproduct(Right(Coproduct(Left( ...

Nikolay
21.02.2017
20:00:05
а можно кстати как-то сохранить тег, когда передаешь такой тип в какую-то общую функцию? например
val password: String @@ Secret = "123god"
def foo(s: String): String = ???

Oleg
21.02.2017
20:00:29

Nikolay
21.02.2017
20:01:02
то есть его везде протаскивать нужно, либо заново оборачивать

Oleg
21.02.2017
20:01:24
а его нигде протаскивать не нужно
за пределами Free он бессмысленнен

Nikolay
21.02.2017
20:02:04
не, я не про использование в Free, а вообще

Oleg
21.02.2017
20:02:41
а вообще - теги для того и сделаны, что в рантайме они невидимы, потому и бесплатны

Google

Nikolay
21.02.2017
20:03:56
я думал что их можно типа как measures из f# использовать
но видимо нет

Oleg
21.02.2017
20:04:57
в дотнете другая система дженериков, без стирания, поэтому и HKP никак не приделают

Nikolay
21.02.2017
23:05:56
techie - это типа как groupie?

Vladimir
22.02.2017
07:47:29
scala.util.matching.Regex.MatchData
/** The matched string in group `i`,
* or `null` if nothing was matched.
*/
def group(i: Int): String =
if (start(i) >= 0) source.subSequence(start(i), end(i)).toString
else null
криваярожа.жпг

Denis
22.02.2017
07:48:23
что же с нами стало.пнг

.
22.02.2017
07:57:06
эээ а зачем так?

Admin
ERROR: S client not available

.
22.02.2017
07:57:13
т.е. в этом есть какой-то сакральный смысл?

Oleg
22.02.2017
08:48:27

Nick
22.02.2017
09:06:31
https://github.com/scalameta/scalameta/blob/master/changelog/1.6.0.md

Denis
22.02.2017
09:15:19
Our compiler plugins are built against most recent minor versions of supported Scala series (at the time of writing, this is _2.11.8 and _2.12.1) paradise на 2.12.х завезли, я правильно понял?

Oleg
22.02.2017
09:17:21
на централе пока 2.1.0
https://mvnrepository.com/artifact/org.scalamacros/paradise_2.12.1
здесь вроде написано scalas 2.12.1
https://bintray.com/scalameta/maven/paradise/3.0.0-174

Denis
22.02.2017
10:19:19
Проголосуйте плиз https://twitter.com/notxcain/status/834328285274394624

Nikita
22.02.2017
10:20:34
@notxcain хорошо бы еще вариант с plain future

Юрий
22.02.2017
10:42:29

Oleg
22.02.2017
10:45:09
scala.concurrent.Future это прям совсем не plain

Google

Юрий
22.02.2017
10:46:14

Oleg
22.02.2017
10:46:31

Юрий
22.02.2017
10:47:00
а, ну с этой стороны может быть и так


Valera
22.02.2017
10:51:03
Ребята, кто работал со Spark, подскажите пожалуйста
Есть утилита spark-submit
у которой есть ключ
--packages Comma-separated list of maven coordinates of jars to include
on the driver and executor classpaths. Will search the local
maven repo, then maven central and any additional remote
repositories given by --repositories. The format for the
coordinates should be groupId:artifactId:version.
Также есть две библиотеки
com.github.nscala-time:nscala-time_2.11:2.16.0 и datastax:spark-cassandra-connector:2.0.0-RC1-s_2.11
судя доке нужно сделать так:
spark-submit --class "super.puper.CrazyApp" \
--packages com.github.nscala-time:nscala-time_2.11:2.16.0, datastax:spark-cassandra-connector:2.0.0-RC1-s_2.11 \
--master local[4] \
target/scala-2.11/mycrazyapp_2.11-1.0.jar
но это не прокатывает, при чём ругается на отсутвие майн-класса (java.lang.ClassNotFoundException: super.puper.CrazyApp), он точно есть
если оставить только одну из библиотеку, например так
--packages com.github.nscala-time:nscala-time_2.11:2.16.0 \
и закоментить использование второй в коде - всё отлично работает
и наоборот если сделать тоже самое но с другой бибилиотекой, то всё будет хорошо
Внимание, знатоки, теперь вопрос: что я делаю не так?


KrivdaTheTriewe
22.02.2017
10:55:51
Вопросом на вопрос, а работает ли если собрать проект с необходимыми джарками?

Grigory
22.02.2017
10:55:57
1. принципиально в жирный джарник эти билиотеки не включены?
2. скорее всего что-то другое ломается (?) любая вторая библиооетка такое вызывает или только кассандра коннектор?

KrivdaTheTriewe
22.02.2017
10:56:48

Grigory
22.02.2017
10:57:42
3. попробуй пробел убрать у запятой :D с --jars у меня иногда были пробелмы изза пробела.
или же наоборот, вместо запятой там надо использовать пробел; не помню
кстате там у спарка новый флаг заметил; повзоляет использовать зависимости из пользовательского джарника вместо дергания их из класспафа

KrivdaTheTriewe
22.02.2017
11:00:48
Я так решил json4s использовать :)

Grigory
22.02.2017
11:01:24
ну в рантайме оно падает потому что спарк по дефолту используют зависимости из своего класпафа
логично, что что-то у тебя не совпадает; это только рантайм падение

Oleg
22.02.2017
11:02:28
https://github.com/saurfang/sbt-spark-submit ?

KrivdaTheTriewe
22.02.2017
11:03:05
Ну я понимаю , что руки кривые у меня :) но когда пишешь что-то не всегда помнишь , что там у Спарка в зависимостях