Size: a a a

Scala User Group

2020 January 24

YS

Yaroslav Sushkov in Scala User Group
Mikhail
это ты показываешь как раз рантайм часть, в которой компайл тайм тебе нах не нужен. ты покажи как ты потом работать собираешься с ABCDResult и где действительно показана необходимость компайл тайм ограничений на абцд.

если у тебя АБСД строится исключительно в рантайме, то просто убери всякую возможность построить АБЦД в компайл тайме обходя базовую проверку и все проблемы у тебя сами исчезнут
да понятное дело, что можно сделать приваный конструктор, и  метод у компаньона, который возвращает Either, но это какой-то java-way, еще бы assert в конструкторе бахнуть)
источник

M

Mikhail in Scala User Group
Yaroslav Sushkov
да понятное дело, что можно сделать приваный конструктор, и  метод у компаньона, который возвращает Either, но это какой-то java-way, еще бы assert в конструкторе бахнуть)
ты жертва маркетинга?
источник

AZ

Alex Zhukovsky in Scala User Group
Henadz Varantsou
если мы пишем class A[T] { ... } или trait B[T] { ... }
ну т.е. какую-нибудь конструкцию, параметризованную типом Т, как она называется по-русски в общем?
я нашёл в интернете упоминания на английском: generic class/trait
а как правильно назвать по-русски?
тайп конструктор / конструктор типа
источник

AZ

Alex Zhukovsky in Scala User Group
генерик тож норм
источник

M

Mikhail in Scala User Group
Yaroslav Sushkov
да понятное дело, что можно сделать приваный конструктор, и  метод у компаньона, который возвращает Either, но это какой-то java-way, еще бы assert в конструкторе бахнуть)
java-way  = return good or else throw. Either - уже не java way. И refined либа которую ты упомянул - половину результатов возвращает в том же Either - так что за фобия у тебя?
источник

AD

Apache DOG™ in Scala User Group
Henadz Varantsou
если мы пишем class A[T] { ... } или trait B[T] { ... }
ну т.е. какую-нибудь конструкцию, параметризованную типом Т, как она называется по-русски в общем?
я нашёл в интернете упоминания на английском: generic class/trait
а как правильно назвать по-русски?
Почему не написать дженерик класс
источник

YS

Yaroslav Sushkov in Scala User Group
Mikhail
java-way  = return good or else throw. Either - уже не java way. И refined либа которую ты упомянул - половину результатов возвращает в том же Either - так что за фобия у тебя?
мне кажется мы не понимаем друг друга. я ничего не имею против Either. Refined возвращает Either[String, Int Refined Positive] = Right(42)
источник

YS

Yaroslav Sushkov in Scala User Group
Mikhail
java-way  = return good or else throw. Either - уже не java way. И refined либа которую ты упомянул - половину результатов возвращает в том же Either - так что за фобия у тебя?
т.е. вопрос в пердставлении того, что справа лежит
источник

YS

Yaroslav Sushkov in Scala User Group
Yaroslav Sushkov
т.е. вопрос в пердставлении того, что справа лежит
там не  Int возвращается, а Int Refined Positive
источник

YS

Yaroslav Sushkov in Scala User Group
я так понимаю там фантомные типы используются, и это дело просто кастится. Но по сигнатуре ты просто инт не засунешь туда, где Int Refined Positive требуется
источник

M

Mikhail in Scala User Group
Yaroslav Sushkov
там не  Int возвращается, а Int Refined Positive
и что дальше?

`
// указом от 24 января сего года (2020 г. от рождества Христова)  закрепляю за этим трейтом мистические свойства
trait ABCD {}
object ABCD {
def apply():Either[String, ABCD]
`
справа тоже не инт, как видишь
источник

YS

Yaroslav Sushkov in Scala User Group
Mikhail
и что дальше?

`
// указом от 24 января сего года (2020 г. от рождества Христова)  закрепляю за этим трейтом мистические свойства
trait ABCD {}
object ABCD {
def apply():Either[String, ABCD]
`
справа тоже не инт, как видишь
🤦‍♂️
источник

YS

Yaroslav Sushkov in Scala User Group
расходимся
источник

YS

Yaroslav Sushkov in Scala User Group
это из разряда а нафига  NonEmptyList в котах? пусть везде Option[List[T]] тащат и компаньон забацать с проверкой
источник

YS

Yaroslav Sushkov in Scala User Group
изи же
источник

M

Mikhail in Scala User Group
Yaroslav Sushkov
я так понимаю там фантомные типы используются, и это дело просто кастится. Но по сигнатуре ты просто инт не засунешь туда, где Int Refined Positive требуется
Ну это как бы первое, чего мы ждем от языков с компайл тайм проверкой типов. Область вычислений и доказательств на типах - это совсем другое и ты ни разу не показал, что оно действительно тебе требуется.
источник

M

Mikhail in Scala User Group
Yaroslav Sushkov
это из разряда а нафига  NonEmptyList в котах? пусть везде Option[List[T]] тащат и компаньон забацать с проверкой
и где тут компайл тайм вычисления и доказательства?
источник

YS

Yaroslav Sushkov in Scala User Group
да нету ее, я про то как представить модель данных, которая уже валидная
источник

YS

Yaroslav Sushkov in Scala User Group
все, не будем больше захламлять чатик лишней полемикой
источник

M

Mikhail in Scala User Group
Yaroslav Sushkov
да нету ее, я про то как представить модель данных, которая уже валидная
trait ABCD - вот так и представить. это примерно равноценно(если не брать несущественные нюансы с тегами - что не имеет отношения к текущему) Int Refined Positive. Только почему то у тебя иллюзии какие-то, что у второго представления какие-то особые мистические свойства. Но их нет
источник