
Oleg
27.03.2018
06:37:44
У классов есть отношение частичного порядка - один класс может быть подклассом другого
Это значит, в том числе, что есть уникально определяемое отображение из структуры подкласса в структуру надкласса
Подставляем сюда понятие "тип" вместо "сущность" получаем "класс типов"
Класс всех типов - опрелеляется как тип с пустой структурой

Google

Oleg
27.03.2018
06:39:57
Отношение подкласса должно быть транзитивно, рефлективно

Daniel
27.03.2018
06:39:59
блин
пойду ромашки выпью, а то опять занудство врубается (контексты перемешены, от классов в теории множества незаметный переход к классам в понятии хацкелля, но это не хацклль поскольку есть посет)

Oleg
27.03.2018
06:40:44
Есть отношение вхождения, которое тоже должно быть транзитивно относительно отношения субкласса

Nick
27.03.2018
06:42:02
И чего нет в скале?)

Oleg
27.03.2018
06:42:11
Если тип относится к подклассу, он относится и к надклассу

Nick
27.03.2018
06:43:00
Че эт нет ? Прост укажи явно тип надкласса и все ок будет)

Oleg
27.03.2018
06:43:20
Представим, что тип String относится у нас двум классам типов - Monoid и JoinSemilattice
Это автоматически означает, что согласно любому из этих отношений он должен относиться к классу Semigroup

Daniel
27.03.2018
06:44:12
в скалке ж и с рефлексивностью сабтайпинга проблемы

Oleg
27.03.2018
06:44:39
Однако в скалке мы обнаруживаем ambigous implicits

Nick
27.03.2018
06:45:00

Google

Nick
27.03.2018
06:45:05
И все будет хорошо

Oleg
27.03.2018
06:45:06
И оказывается, что мы не знаем, по какому из путей нашего частичного порядка классов нам пройти

Daniel
27.03.2018
06:45:32
только я не оч понимаю одного момента
термин слизан с хацкелля (или еще какого-нить языка) и начали в контексте а есть ли в скалке
но в хацкелле же нет отношений частичного порядка между классами

Oleg
27.03.2018
06:45:34

Nick
27.03.2018
06:46:02
А если у тебя два инстанса тайпкласса подходят, то почему бы не валится ?

Oleg
27.03.2018
06:46:04

Nick
27.03.2018
06:46:06
Это правильный вариант

Oleg
27.03.2018
06:46:25
А в хацкеле получаем. У нас всегда один инстанс

Nick
27.03.2018
06:46:57
Я кажется понял про что ты

Daniel
27.03.2018
06:47:08

Nick
27.03.2018
06:48:15
Откуда вы вообще термин взяли

M
27.03.2018
06:49:59
Давайте говорить как петербуржцы не функторы а мапер не монада а контейнер

Oleg
27.03.2018
06:50:03
Ну смотрите, я утверждаю, что в скалке нет тайпклассов.
Вы утверждаете, что есть. Согласно любой конструктивной логике, тяжесть доказательства лежит на вас. Так что коли чаи с ромашкой попиты, предлагаю дать вам определение класса типов, и рассказать, что это есть в скалке

Nick
27.03.2018
06:50:55

Daniel
27.03.2018
06:51:27

Oleg
27.03.2018
06:52:02

Nick
27.03.2018
06:52:38
Откуда вообще ты определение взял

Oleg
27.03.2018
06:53:01

Google

Oleg
27.03.2018
06:53:10

Nick
27.03.2018
06:53:24
Прокатит
Откуда ?

Oleg
27.03.2018
06:53:33
Давай своё определение и демонстрацию
Когда дашь, будем сравнивать, откуда мы их взяли, какое более авторитетно и консистентно

Nick
27.03.2018
06:54:12
Давай сперва с источником твоего ознакомимся

Oleg
27.03.2018
06:54:23
Потому что по умолчанию в скалке нет ничего. Говоришь, что есть - покаж

Nick
27.03.2018
06:55:19
Да я в википедии прочитал
Лол

Oleg
27.03.2018
06:55:53
Таким образом, я соглашусь, что можно утверждать, что понятие класса типов распространяется на скалку, если мы выкинем из рассмотрения поиск имплиситов

Oleg
27.03.2018
07:00:48
Тогда наше "следствие" - это просто функция, а не implicit derivation
И тогда мы действительно можем получить транзитивность, как простой субститьюшн, ну или композицию, смотря как предоставлять функции из типов

Alex
27.03.2018
07:54:35
ребят кто-нибудь решал такую проблему со скаламоком:
когда мокаешь параметры функции, которые она ожидает нужно обязательно их все указывать
даже implicits
и там нужно обязательно прописывать тип имплисита например _: SomeType

Alexander
27.03.2018
07:56:11
а в чём проблема?

Alex
27.03.2018
07:56:33
проблема в том что имплисит находится в библиотечном приватном обджекте

Google

Alex
27.03.2018
07:56:38
куда у меня нету доступа
такой вот долгий интрадакшн

Alexander
27.03.2018
07:57:06
не может быть такого, что тебе доступен метод, а тип его параметра недоступен

Alex
27.03.2018
07:57:08
есть вариант сделать такой же пекендж как у этого объекта
но это как-то тупо

Admin
ERROR: S client not available

Alex
27.03.2018
07:59:35
protected[scala] object A {
sealed class AA()
}
что-то типо такого
и к этому типу (в данном случае AA) нету доступа

Enver
27.03.2018
08:53:54
Как вам Скала без запятых? https://contributors.scala-lang.org/t/comma-inference/1521
Тип чтоб их можно было пропускать так же как и точку с запятой:
def hasSemicolon() = {
println("one"); println("two"); println("three")
}
def noSemicolon() = {
println("one")
println("two")
println("three")
}
def hasComma() = {
List("one", "two", "three")
}
def noComma() = {
List(
"one"
"two"
"three"
)
}

Dmitry
27.03.2018
08:54:18
fix умеет уже вроде

Oleg
27.03.2018
08:56:16
ваще не понимаю профита

Aleksey
27.03.2018
08:56:46
5 апреля в 19:00 в московском офисе Тинькофф-банка пройдет московская встреча Scala-разработчиков. https://www.meetup.com/Scala-Moscow/events/249149083/ Обязательная регистрация через сайт Тинкофф-банка https://meetup.tinkoff.ru/events/scala-meetup (нужна для пропуска в БЦ). По всем вопросам обращаться @fomkin и @optician_owl

Nikolay
27.03.2018
08:57:48

Александр
27.03.2018
08:58:16

Nikolay
27.03.2018
08:58:35
Чтобы settings в списке писать без запятых

Enver
27.03.2018
08:59:42
ваще не понимаю профита
Ну ты обсуждение о trailing comma читал?
https://github.com/scala/docs.scala-lang/pull/533
Удобно добавлять новые элементы в конец или удалять, не редактируя предыдущую строчку с запятой.

Юрий
27.03.2018
09:00:25

Aleksey
27.03.2018
09:01:33

Daniel
27.03.2018
09:02:00

Google

Oleg
27.03.2018
09:04:17
но синтакцис
foo(
x
y
z
)в моей голове редуцируется в foo(x y z) а не в foo(x, y, z)

Kirill
27.03.2018
09:13:57

Oleg
27.03.2018
09:18:04

Aleksey
27.03.2018
09:18:26

Denis
27.03.2018
09:37:18

Oleg
27.03.2018
09:41:03
ну короч, сложно мне понять профит

Denis
27.03.2018
09:50:49
ну короч, сложно мне понять профит
Профит -- только когда бесит писать запятые при длинных списках чего-либо.
Кстати, там ещё гипотетически можно Haskell-Python-like meaningful identation использовать, например
foo(
a
b
c
) выводится в foo(a, b, c), а
foo(
a
b
c
d
) выводится в foo(a b c, d). Но это не выглядит в стиле Scala.

Oleg
27.03.2018
10:05:38
ну т.е. в то время как есть реальные проблемы с бойлерплейтом в скалке, обсуждать выбрасывание запятых, которые лично мне проблемой не кажутся.
Мне интересно, люди, которым это кажется проблемой
Для них это прям один из первичных источников бойлерплейта?

Vadim
27.03.2018
10:13:37
ну в текущей версии тот другой бойлерплейт никто убирать не будет)

Mikhael
27.03.2018
10:50:09
Всем, привет. я в скала очень новый человек, пытаюсь повторить вот этот пример. https://spark.apache.org/docs/2.3.0/mllib-clustering.html но когда доходит до выполнения map, получаю play.sbt.PlayExceptions$CompilationException: Compilation error[Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Support for serializing other types will be added in future releases.]

Henadz
27.03.2018
10:51:32
там же написано в тексте ошибки
можно использовать лишь примитивные типы или их продукты

Mikhael
27.03.2018
10:52:04
так вот я и не пойму)) я пытаюсь сделать так.