Size: a a a

Scala User Group

2020 June 18

λ

λoλegΥch in Scala User Group
это про не всегда определенный порядок, а не про "определенное поле"
источник

VP

Vladimir Pavkin in Scala User Group
Vladimir Sam
И снова про грабли:
нет ли тут подвоха? Если мне в каком то случае нужен ордеринг по определенному полю в кейс классе, получается тем же имплиситом я получу Eq по этому полю, чего я совсем не хочу
ну поидее ордеринг и Eq связаны законами. просто в скале ты можешь ими вертеть как хочешь.
источник

VS

Vladimir Sam in Scala User Group
т.е.  фактически cats.Order.by[T](_.somefield) делаем намек, что  T изоморфичен somefield?
источник

VS

Vladimir Sam in Scala User Group
// мимо неглядя в законы
источник

λ

λoλegΥch in Scala User Group
причем тут законы
источник

λ

λoλegΥch in Scala User Group
ты не понял для чего этот тайпклас
источник

VP

Vladimir Pavkin in Scala User Group
я так понял вопрос не про Partial в Order, а про то почему он экстендит Eq
источник

VP

Vladimir Pavkin in Scala User Group
но мб я не так понял
источник

VS

Vladimir Sam in Scala User Group
Vladimir Pavkin
я так понял вопрос не про Partial в Order, а про то почему он экстендит Eq
да вопрос именно в этом
источник

λ

λoλegΥch in Scala User Group
оно никак не противоречит Eq
источник

VS

Vladimir Sam in Scala User Group
т.е. глобально

Order extends PartialOrder extends Eq

мне кажется, что Eq это хороший кандидат на когерентность, но Orderов уж точно может быть много разных для одного и того же типа
источник

λ

λoλegΥch in Scala User Group
Eq тоже может быть много
источник

λ

λoλegΥch in Scala User Group
для этого изобрели ньютайпы
источник

VP

Vladimir Pavkin in Scala User Group
Vladimir Sam
т.е. глобально

Order extends PartialOrder extends Eq

мне кажется, что Eq это хороший кандидат на когерентность, но Orderов уж точно может быть много разных для одного и того же типа
ну просто если ты где-то юзаешь ордер, то eq должен быть оттуда же. иначе че-то сломаться может
источник

VS

Vladimir Sam in Scala User Group
🤔 By the totality law, x <= y and y <= x cannot be both false.

получается случай, когда x =!= y && x lt y && x gt y это норма?
источник

P

Pavel in Scala User Group
говоря о ньютайпах, камент норм:
/** Safe type casting from A to B. */
trait Coercible[A, B] {
 @inline final def apply(a: A): B = a.asInstanceOf[B]
}
источник

VS

Vladimir Sam in Scala User Group
Vladimir Sam
🤔 By the totality law, x <= y and y <= x cannot be both false.

получается случай, когда x =!= y && x lt y && x gt y это норма?
*норма с учетом того, что будут явно переданы разные инстансы
источник

λ

λoλegΥch in Scala User Group
Pavel
говоря о ньютайпах, камент норм:
/** Safe type casting from A to B. */
trait Coercible[A, B] {
 @inline final def apply(a: A): B = a.asInstanceOf[B]
}
это детали имплементации
источник

VP

Vladimir Pavkin in Scala User Group
Vladimir Sam
🤔 By the totality law, x <= y and y <= x cannot be both false.

получается случай, когда x =!= y && x lt y && x gt y это норма?
я бы вообще ни на какие законы не полагался там где Eq и Order от разных инстансов
источник

λ

λoλegΥch in Scala User Group
в этом кстате плюс того что он екстендит eq
источник