Size: a a a

Scala User Group

2020 November 27

M

Mikhail in Scala User Group
Юрий Бадальянц
@rudogma привет! В supertagged почему в NewType и в NewType0 метод lift сделан по разному?
В NewType0 нет type member Raw, чтобы не ограничивать в каком виде оно будет представлено, поэтому этот Raw указан как тайп параметр для метода lift. А NewType - конкретно вырожденная версия, в которой все известно и это просто сокращенная версия, чтобы не писать при вызове метода. В остальном одно и то же
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Mikhail
В NewType0 нет type member Raw, чтобы не ограничивать в каком виде оно будет представлено, поэтому этот Raw указан как тайп параметр для метода lift. А NewType - конкретно вырожденная версия, в которой все известно и это просто сокращенная версия, чтобы не писать при вызове метода. В остальном одно и то же
А как мне тогда применить lift в NewType0? Вот есть у меня инстанс Monad для типа, хочу его лифтануть в ньютайп.
источник

M

Mikhail in Scala User Group
Юрий Бадальянц
@rudogma привет! В supertagged почему в NewType и в NewType0 метод lift сделан по разному?
Возможно стоило бы в NewType0 написать lift0, чтобы можно было в наследниках сокращенные версии привычным образом добавлять
источник

M

Mikhail in Scala User Group
Юрий Бадальянц
А как мне тогда применить lift в NewType0? Вот есть у меня инстанс Monad для типа, хочу его лифтануть в ньютайп.
MyNewtype.lift[F, MyNewtype.Raw] - примерно так. Но я думаю, что действительно стоит переименовать в lift0 и обновить сегодня.
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Блин, у меня там ещё kind projectorом сверху намазано
источник

БЁ

Борщевик Ёбаный... in Scala User Group
а можно было просто на яве бахнуть и отдыхать пойти
источник

К

Кемель in Scala User Group
Добрый день. Учу Akka Claster typed. Хотел бы у Вас уточнить:
1) cluster - это тот object, который "поднимает/создает" ActorSystem?
2) node - это object, к которому мы передаем номер порта, и создаем через context.spawn? Так же, чтобы иметь множество node, нужно ли включать номера портов этих node в config.seed-nodes вручную?
3) Как определяется Leader у Node?
источник

VA

Vektor AB in Scala User Group
Oleg ℕizhnik
что должно произойти, чтобы скалистов перестало бомбить на 10 страниц чата при однократном упоминании JS
А бомбеж после java уже победили?
источник

ZM

ZLoyer Matveev in Scala User Group
Vektor AB
А бомбеж после java уже победили?
Да. Забанили всех кроме апача и дмсола.
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Mikhail
MyNewtype.lift[F, MyNewtype.Raw] - примерно так. Но я думаю, что действительно стоит переименовать в lift0 и обновить сегодня.
А если у меня Raw вида Raw[F, A] и я хочу лифтануть lift[Monad, Raw[F, *]]? Так вообще можно, или только конкретизируя A?
источник

M

Mikhail in Scala User Group
Юрий Бадальянц
А если у меня Raw вида Raw[F, A] и я хочу лифтануть lift[Monad, Raw[F, *]]? Так вообще можно, или только конкретизируя A?
В теории можно, если Raw[F,*] является для тебя конкретным типом, но точно потеряется инфа об A в готовом ньютайпе. Надо пробовать, если не получится - напиши похожий скасти, подумаю
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Mikhail
В теории можно, если Raw[F,*] является для тебя конкретным типом, но точно потеряется инфа об A в готовом ньютайпе. Надо пробовать, если не получится - напиши похожий скасти, подумаю
источник

M

Mikhail in Scala User Group
Тут собака в
`type Kokoko[F[_]] = EitherT[WriterT[F, List[String], *], String, *]
type Λ$ takes type parameters
`

Что-то много дырок. Выглядит переусложнением, но я подумаю.
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Mikhail
Тут собака в
`type Kokoko[F[_]] = EitherT[WriterT[F, List[String], *], String, *]
type Λ$ takes type parameters
`

Что-то много дырок. Выглядит переусложнением, но я подумаю.
Ну не совсем же, ведь type Raw[F[_], A] = EitherT[WriterT[F, List[String], *], String, A]
источник

M

Mikhail in Scala User Group
Юрий Бадальянц
Ну не совсем же, ведь type Raw[F[_], A] = EitherT[WriterT[F, List[String], *], String, A]
Это у тебя, но я про то, в чем реальный затык компилятора и кайнд-прожектора.
источник

ЮБ

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

ЮБ

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

ЮБ

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

M

Mikhail in Scala User Group
Юрий Бадальянц
Эт я понял. Я пытаюсь в lift тайп лямбду засунуть, а она ждёт конкретный тип
но дело не в лифте. а именно в тайп лямбде. Потому что тайплямбда которая тебе нужна - возвращает дырку и компилятор не шмогла.

type A[F[_], T] = WriterT[F, List[String], T]
 type B[F[_], T] = EitherT[A[F, *], String, T]
 type X = Lambda[a => B[F,a]] // -вот это кайнд-прожектор и получается type Λ$ takes type parameters
type Koko[X] = ({type Λ$[A] = B[F,A]})#Λ$[X]     // вот так должно быть.
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Mikhail
но дело не в лифте. а именно в тайп лямбде. Потому что тайплямбда которая тебе нужна - возвращает дырку и компилятор не шмогла.

type A[F[_], T] = WriterT[F, List[String], T]
 type B[F[_], T] = EitherT[A[F, *], String, T]
 type X = Lambda[a => B[F,a]] // -вот это кайнд-прожектор и получается type Λ$ takes type parameters
type Koko[X] = ({type Λ$[A] = B[F,A]})#Λ$[X]     // вот так должно быть.
А, то есть это кайнд прожектор не так раскрывает звёздочки свои в лямбду получается?
источник