Size: a a a

Scala User Group

2020 January 20

ЮБ

Юрий Бадальянц in Scala User Group
Oleg ℕizhnik
а мы с Михаилом и не спорили
Но вы же говорите противоречивые вещи.
Олег говорит, что для каждого примитива нужен свой трейт.
А Михаил в своём ответе пишет, что в supertagged тэги не боксятся. Но в supertagged нету трейтов на каждый примитив.
источник

M

Mikhail in Scala User Group
@odomontois почему не работает опс автоматом? https://scastie.scala-lang.org/rudogma/4KnDYHTXQxiV2RzSF7l9kA/4
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник

M

Mikhail in Scala User Group
Юрий Бадальянц
Но вы же говорите противоречивые вещи.
Олег говорит, что для каждого примитива нужен свой трейт.
А Михаил в своём ответе пишет, что в supertagged тэги не боксятся. Но в supertagged нету трейтов на каждый примитив.
нужен не трейт, а не эфемерный якорь. В супертагетах для тегов в этой роли выступает this.type который материализуется для object
источник

ЮБ

Юрий Бадальянц in Scala User Group
И таки получаается, что def foo(coco: Coco) : Coco = coco не будет боксить? @odomontois
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
Но вы же говорите противоречивые вещи.
Олег говорит, что для каждого примитива нужен свой трейт.
А Михаил в своём ответе пишет, что в supertagged тэги не боксятся. Но в supertagged нету трейтов на каждый примитив.
короче не враппит супертаггед, узбагойся, проверил javap
источник

ЮБ

Юрий Бадальянц in Scala User Group
еее
источник

ЮБ

Юрий Бадальянц in Scala User Group
Хоспади когда же уже опаки придут
источник

M

Mikhail in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
Хоспади когда же уже опаки придут
источник

ЮБ

Юрий Бадальянц in Scala User Group
👍
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну класстагов нет, а new Array(size) вызывается
источник

Oℕ

Oleg ℕizhnik in Scala User Group
а ты туда NonEmptySet передаёшь
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник

M

Mikhail in Scala User Group
но теперь опсы работают через имплисит конвертацию и значит будет всегда врап, раз Ops как тип для возвращаемого метода использован. А если убрать и добавить implicit к опсам, то выдает рантайм егорку https://scastie.scala-lang.org/rudogma/0zy25QlETD2QNzo3NvApOA/5
источник

M

Mikhail in Scala User Group
Mikhail
но теперь опсы работают через имплисит конвертацию и значит будет всегда врап, раз Ops как тип для возвращаемого метода использован. А если убрать и добавить implicit к опсам, то выдает рантайм егорку https://scastie.scala-lang.org/rudogma/0zy25QlETD2QNzo3NvApOA/5
Но это можно решить через другой трюк

sealed trait ImplicitScope[T, +U] extends Any {
   type Raw = T
   type Gag <: U
 }

trait NewTypeInvColl[F[_]] {
 trait CollTag extends Any
 type T[A] <: AnyRef with CollTag with ImplicitScope[F[A], NewTypeInvColl.Tag[F, T]]


но тогда опять массивы отваливаются, но это решается через замену на = -> type T[A] = AnyRef

но тогда компилятор начнет ругаться illegal cyclic reference involving type T https://scastie.scala-lang.org/rudogma/0zy25QlETD2QNzo3NvApOA/13
источник

M

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

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
но теперь опсы работают через имплисит конвертацию и значит будет всегда врап, раз Ops как тип для возвращаемого метода использован. А если убрать и добавить implicit к опсам, то выдает рантайм егорку https://scastie.scala-lang.org/rudogma/0zy25QlETD2QNzo3NvApOA/5
ни понел
источник

Oℕ

Oleg ℕizhnik in Scala User Group
где будет враппинг
источник