Size: a a a

Scala User Group

2020 November 25

AS

Alex Sh in Scala User Group
Λнтон Войцишевский
ну логгеры или метрики тегать ими можно как пример:
trait Logger[F[_], service <: Singleton with String]

class FooService[F[_]](implicit log: Logger[F, «foo-service»])
ну и потом такой  вот логгер создать.

а значение этого типа  можно через ValueOf достать, чтобы в метрики писать потом:
val saveMetrics[service <: Singleton with String](implicit vo: ValueOf[service]) = save(vo.value)
saveMetrics[«kek»] //в vo.value будет строка «кек»

зачем — чтобы не накосячить во всяких именах или чтобы работал имплисит резолюшн.
Метрики мы например текаем обжектами-компаньонами соответствующего класса
Есть что-нть в публичном доступе про это?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
или шапелесс, он теперь тоже умеет в синглтон-числа
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Alex Sh
Есть что-нть в публичном доступе про это?
в тофу в исходниках ServiceLogging например, но надо копаться. А так не видел, может написать надо
источник

AS

Alex Sh in Scala User Group
Λнтон Войцишевский
в тофу в исходниках ServiceLogging например, но надо копаться. А так не видел, может написать надо
Ну хоть что-то. Исходники tofu уже давно на компе )
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Alex Sh
У меня была идея чтобы проверять MIN <= MAX на этапе компиляции.
Нужно для валидации строк по длине.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Alex Sh
У меня была идея чтобы проверять MIN <= MAX на этапе компиляции.
Нужно для валидации строк по длине.
а в рефайнед есть предикат Length или Size, не оч помню
источник

AS

Alex Sh in Scala User Group
Λнтон Войцишевский
а в рефайнед есть предикат Length или Size, не оч помню
Что-то похожее точно есть в refined. Занырнул в их доки.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Alex Sh
У меня была идея чтобы проверять MIN <= MAX на этапе компиляции.
Нужно для валидации строк по длине.
type StringOfSize9 = String Refined SizeIs[9]


import eu.timepit.refined.collection._
import eu.timepit.refined.generic._
import eu.timepit.refined.string._

^^^ вот тут где-то
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Вагнер
спасибо за подробные ответы
перечитаю
Опять же нестирание тайппараметров не противоречит параметрисити, а стирание  её не обеспечивает.
И даже приколы со структурами, где у вас в рантайме сохранена информация, с каким параметром типа эта структура инициализирована, так чтобы компилятор вам поверил, в ограниченной форме вполне реализуема и в scala/haskell, и не будет ничего ломать, она требует другой фичи, для которой полезно стирание генериков - ГАДТ
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Oleg ℕizhnik
Опять же нестирание тайппараметров не противоречит параметрисити, а стирание  её не обеспечивает.
И даже приколы со структурами, где у вас в рантайме сохранена информация, с каким параметром типа эта структура инициализирована, так чтобы компилятор вам поверил, в ограниченной форме вполне реализуема и в scala/haskell, и не будет ничего ломать, она требует другой фичи, для которой полезно стирание генериков - ГАДТ
Это ж тайптеги/класстеги? Зачем для них гадт?
источник

AS

Alex Sh in Scala User Group
Ха!
Оказалось что всё уже сделано!
import singleton.ops._

class GenericStringValidator[MIN <: XInt : ValueOf, MAX <: XInt : ValueOf](implicit ev: Require[MIN <= MAX]) {
 private val minValue = implicitly[ValueOf[MIN]].value
 private val maxValue = implicitly[ValueOf[MAX]].value
 
 println(minValue)
 println(maxValue)
}

val instance = new GenericStringValidator[1, 10]

https://scastie.scala-lang.org/coffius/YSbJly8aQQ2gijXUtJGzpg/4
источник

AS

Alex Sh in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Λнтон Войцишевский
Это ж тайптеги/класстеги? Зачем для них гадт?
Рефлекшеновым тайптегом ты не сможешь убедить компилятор, что у тебя значение того же типа
источник
2020 November 26

AD

Apache DOG™ in Scala User Group
λoλegΥch
блин на самом деле он теперь всегда ругается на матч по енуму :(
Кто-то пользуется скала энамами?
источник

λ

λoλegΥch in Scala User Group
кот
источник

AD

Apache DOG™ in Scala User Group
Oleg ℕizhnik
Никаких преимуществ в корректности получения данных по сети в сишарпе или сишке по сравнению с джавой или хаскелем не замечено
Есть возможность код который берет параметр дженериков и что-то с ним делает
источник

AD

Apache DOG™ in Scala User Group
Вне башень из слоновой кости
источник

ΑZ

Αλεχ Zhukovsky in Scala User Group
короч понял, что единственный способ оценить прелести скалы - пойти куда-то писать на котовом стеке
источник

ΑZ

Αλεχ Zhukovsky in Scala User Group
а то на игрушечных примерах нифига не понятно, реально ли есть профиты или врут всё
источник

D

Deλ✨ in Scala User Group
Αλεχ Zhukovsky
короч понял, что единственный способ оценить прелести скалы - пойти куда-то писать на котовом стеке
ето так
источник