Size: a a a

Scala User Group

2020 November 27

M

Mikhail in Scala User Group
Юрий Бадальянц
Но чё делать то с этим? :) Пока я asInstanceOf делаю и это работает
Если ты можешь гарантировать, что там все ок по типам и ты не ошибся в своих вычислениях - то в таких случаях возможно это лучший выход
источник

M

Mikhail in Scala User Group
Юрий Бадальянц
А, то есть это кайнд прожектор не так раскрывает звёздочки свои в лямбду получается?
Он раскрывает их в соответствии с тем как декларирует, но тут масло масляное и это поведение не предусмотрено. Возможно у него есть какой-то хинт для таких случаев, но надо подробнее смотреть
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
Но чё делать то с этим? :) Пока я asInstanceOf делаю и это работает
ну законтрибуть lift1 просто
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Oleg ℕizhnik
ну законтрибуть lift1 просто
Для типов с дыркой?
источник

Oℕ

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

Oℕ

Oleg ℕizhnik in Scala User Group
в дотти можно будет сделать поликайндным, но типы кайнды выводиться не будут
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Я надеюсь такие либы не нужны будут в дотти вообще, после введения opaque types
источник

Oℕ

Oleg ℕizhnik in Scala User Group
нужны, конечно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
всё, что изменится в дотти - это то, что раньше нужно было в одном месте написать .asInstanceOf, а теперь не нужно будет
никаких синтаксисов, коершенов, лифтокоершенов, ничего такого не предвидится
источник

M

Mikhail in Scala User Group
Юрий Бадальянц
А, то есть это кайнд прожектор не так раскрывает звёздочки свои в лямбду получается?
вот в еще более упрощенном виде проблема
type A[F[_]] = WriterT[F, List[String], *] // type Λ$ takes type parameters
источник

Oℕ

Oleg ℕizhnik in Scala User Group
вы, возможно, полагали, что вам поставят всю машинерию ньютайпную из хаскеля, но на самом деле поставят ключевое слово, которое в одном месте включает трюк для копилятора, который превратит алиас за пределами скоупа определения в абстрактный тип и всё
источник

M

Mikhail in Scala User Group
Mikhail
вот в еще более упрощенном виде проблема
type A[F[_]] = WriterT[F, List[String], *] // type Λ$ takes type parameters
а вот так потребно
type A[F[_]] = WriterT[F, List[String], ({type Λ$[a] = WriterT[F, List[String], a]})#Λ$[_]]
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Mikhail
а вот так потребно
type A[F[_]] = WriterT[F, List[String], ({type Λ$[a] = WriterT[F, List[String], a]})#Λ$[_]]
Жесть конечно
источник

ЮБ

Юрий Бадальянц... in Scala User Group
но я понял проблему, спасибо
источник

ЮБ

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

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
По крайней мере такие либы будет намного проще запилить
чем
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Вот этот исходник станет короче на одну эту строку
https://github.com/rudogma/scala-supertagged/blob/master/src/main/scala/supertagged/package.scala#L23
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Вот такая простота
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну можно ещё конечно фигурные скобки убрать, но опаки ни при чём
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Олег, ну ты зачем такое делаешь
источник