Описание тега kind-projector
Плагин компилятора Scala для упрощения написания лямбда-выражений типов и полиморфных лямбда-выражений
1
ответ
Что такое добрый проектор
Я копался в FP и во всем, что его окружает, и я нашел идею доброго проектора, написанную где-то, без подробностей и объяснений. Единственное, что я нашел, был этот проект github, и я начинаю думать, имел ли он в виду этот конкретный проект или какую…
06 окт '16 в 20:42
4
ответа
Можно ли "карри" более высокопородных типов в Scala?
Предположим, у меня есть черта с двумя параметрами типа, например trait Qux[A, B] и другой признак с параметром типа с более высоким родом, например trait Turkle[C[_]] Я хотел бы иметь возможность заменить фиксированное значение для одного из параме…
06 июн '11 в 04:38
1
ответ
Частично примененный тип лямбда в Scala с добрым проектором
Рассмотрим следующее определение типа: trait LiftF[F[_], G[_]] { def liftF[A](fa: F[A]): G[A] } При предоставлении требования для неявного этого типа в контексте контекста (используя добрый плагин проектора) мы должны написать это так: def func[A, G…
21 мар '19 в 10:35
1
ответ
Почему опция [Try[_]] не соответствует F[_]?
Итак, что-то вроде этого: @ trait IntWrapper[F[_]] { def apply(i: Int): F[Int] } defined trait IntWrapper @ class OptWrapper extends IntWrapper[Option] { def apply(i: Int) = Option(i) } defined class OptWrapper Теперь я хочу сделать что-то вроде это…
22 авг '19 в 11:16
1
ответ
Обобщенные ограничения в предложении параметра типа?
SLS определяет синтаксис предложения параметра типа как TypeParamClause ::= ‘[’ VariantTypeParam {‘,’ VariantTypeParam} ‘]’ FunTypeParamClause::= ‘[’ TypeParam {‘,’ TypeParam} ‘]’ VariantTypeParam ::= {Annotation} [‘+’ | ‘-’] TypeParam TypeParam ::=…
05 апр '20 в 18:58
1
ответ
добрый проектор возвращает странные результаты
У меня есть такие типы:SomeTypeClass Тип с более высоким родством, который имеет один параметр типа вида * => * => * trait SomeTypeClass[P[_, _]] { def test[F[_], S, T, A, B](f: (A => F[B]) => S => F[T]) (pab: P[A, B]) (implicit ev: Strong[…
11 дек '19 в 22:36
1
ответ
Что означает * в тестах?
В тестах кошек, * встречается как параметр типа, например, здесь: checkAll("Nested[Eval, List, *]", DeferTests[Nested[Eval, List, *]].defer[Int]) (См. https://github.com/typelevel/cats/blob/master/tests/src/test/scala/cats/tests/NestedSuite.scala) Я…
14 окт '19 в 16:51
1
ответ
Разница между * (звездочка) и _ (подчеркивание) в параметре типа
Здесь кто-то говорит, что звездочка - это подчеркивание из scala 3, но я видел такой код в scala 2.13: def make[F[_]: ContextShift: MonadError[*[_], Throwable]: Effect: Logging](): ... Имеет ли он такое же значение и просто указывает, что тип в * н…
08 май '20 в 21:56
1
ответ
Уточнение поведения кросс-версий в Scala
Интересно, в чем разница между ними: addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.3" cross CrossVersion.full) // if your project uses multiple Scala versions, use this for cross building addCompilerPlugin("org.typelevel" % "kind-pro…
19 фев '21 в 16:48
0
ответов
Как читать сложный тип [TwinMonad [p0 $$, p1 $$] F [Any, p0 $$, p1 $$]] в scala?
Кто-нибудь знает, что означает этот тип Scala? Идея подсказывает мне тип, но я не могу понять, что это значит. [TwinMonad[p0$$, p1$$] F[Any, p0$$, p1$$]] Что значит p0$$ иметь в виду? Почему выражение TwinMonad[p0$$, p1$$] отдельно от F[Any, p0$$, p…
29 сен '21 в 14:24
0
ответов
Полиморфный метод работает с лямбда-типом, но не с подстановочным знаком типа в Scala 3.
В Scala 3 я могу определить функтор для состояния, используя лямбда-тип: given stateFunctor[S]: Functor[[A] =>> State[S, A]] with override def map[A, B](a: State[S, A])(fx: A => B): State[S, B] = State(a.run.andThen { case (s, a) => (s, …
31 окт '22 в 18:21
1
ответ
Объявить естественное преобразование для пакетной обработки с помощью kind-projector
У меня есть следующая черта: trait Test[F[_]]{ def foo: F[Int] } И я попытался применить к нему так называемое пакетное преобразование следующим образом: def withBatching[F[_]](t: Test[F], nat: F ~> F[List[*]]): Test[F[List[*]]] = ??? Проблема в …
25 июл '22 в 10:51