Вопросы по теме 'higher-kinded-types'

Неявное разрешение параметров для более высокородных типов
Рассмотрим следующий код: object foo { trait Bar[Q[_]] implicit object OptionBar extends Bar[Option] def test[T, C[_]](c: C[T])(implicit bar: Bar[C]) = () def main(args: Array[String]) { test(Some(42): Option[Int])...
1346 просмотров
schedule 10.06.2022

Scala: вывод типов и подтипы / высшие типы
Я поигрался со Scalaz, чтобы добавить в scala немного ощущения haskell. Чтобы понять, как все работает в scala, я сам начал реализовывать различные алгебраические структуры и натолкнулся на поведение, о котором упоминали ребята из Scalaz. Вот мой...
914 просмотров

Частично применяя параметры типа
Я отчаянно пытаюсь решить следующее: trait Access[Res[_]] { def access[C]: Res[C] } trait CList[C1, A] extends Access[CList[_, A]] // ?! def test[C1, C2, A](c: CList[C1, A]): CList[C2, A] = c.access[C2] scalac просто говорит: "error:...
2903 просмотров
schedule 01.04.2023

Scala Type-Inference для конструктора типов
У меня есть вопрос относительно вывода типов в конструкторах типов Scala. Я использую Scala 2.9.1... Предположим, я определил дерево: sealed trait Tree[C[_], A] case class Leaf[C[_], A](a: A) extends Tree[C, A] case class Node[C[_], A](a:...
447 просмотров

Границы типа для непримененных параметров типа
Как я могу указать границы непримененного параметра типа более высокого порядка, чтобы компилировалось следующее: trait Declr[Impl[_]] // need to specify constraints for Impl's type parameter trait Sys[S <: Sys[S]] object X extends Declr[X]...
92 просмотров
schedule 25.01.2023

Доступ к параметру конструктора типа границ контекста с более высокими родственными типами
Можно ли получить доступ к параметру конструктора типа более высокого типа в привязке к контексту? Я хочу определить трейт, который принимает тип более высокого типа и имеет метод, который возвращает экземпляр параметра конструктора. case class...
361 просмотров

Приведение пустых значений более высокого типа, чтобы избежать создания экземпляров
Я поймал себя на том, что смотрю отрывок из записи Scalawags#2, а затем идет эта часть о стирании шрифта и Дике Уолле, указывающем, что отражение в конце концов укусит вас за ноги. Итак, я подумал о чем-то, что я делаю довольно часто (и я также...
106 просмотров

Просмотр границ над типами более высокого порядка
Я пытаюсь установить представление, связанное с высокоуровневым типом, и получаю сообщение об ошибке, которое не могу понять. $ scala -language:higherKinds Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_43). Type in...
557 просмотров
schedule 16.10.2022

Как управлять предполагаемым типом для связанных переменных при сопоставлении с образцом при наличии типов более высокого типа
(это основано на статье на http://bertails.org/2015/02/15/abstract-алгебраических-данных-типа ) Во-первых, я определяю абстрактную версию scala.Option . import scala.language.higherKinds trait OptionSig { type Option[+_] type Some[+A]...
179 просмотров

Экзистенциальный тип высшего рода
Я обдумывал проблему дизайна в библиотеке, над которой работаю, и понял, что использование экзистенциальных типов может позволить мне изменить мой дизайн таким образом, чтобы упростить многие части моей библиотеки. Тем не менее, я не могу заставить...
433 просмотров

Общая фабрика типов высшего порядка Scala
Я снова играл со scala, тестируя некоторые функции проверки типа языка. Я пытаюсь реализовать векторную библиотеку, предназначенную для использования с графикой, и я хочу максимально использовать средство проверки типов scala, чтобы при его...
48 просмотров
schedule 23.11.2022

Как использовать переменные универсального (высшего типа) типа в системе подсказок типа Python?
Предположим, я хочу написать универсальный класс, используя mypy, но аргумент типа для класса сам по себе является универсальным типом. Например: from typing import TypeVar, Generic, Callable A = TypeVar("A") B = TypeVar("B") T = TypeVar("T")...
764 просмотров

kind-projector возвращает странные результаты
У меня есть следующие типы: SomeTypeClass Тип более высокого порядка, который имеет один параметр типа вида * => * => * trait SomeTypeClass[P[_, _]] { def test[F[_], S, T, A, B](f: (A => F[B]) => S => F[T])...
119 просмотров

Есть ли сокращение для переменной типа 'm forSome { type m[O] ‹: UpperBound[O] }` в Scala?
Проблема: trait UpperBound[O] trait High[F[O] <: UpperBound[O]] def canEqual(that :Any) = that.isInstanceOf[High[_]] def high(h :High[_]) = ??? Не компилируется, потому что scalac видит тип _ вместо ожидаемого конструктора типа. Как...
94 просмотров

Есть ли способ сопоставить набор значений типа, параметризованного более высоким типом?
Я прочитал существующие вопросы о том, что определения типов с параметризованными границами недопустимы внутри блоков (или что-то в этом роде), но это не помогает мне в моей проблеме: type Cons[X] class Higher[C[X] <: Cons[X]] type AnyHigher =...
50 просмотров