Вопросы по теме 'existential-type'

Экзистенциальные типы и сопоставление с образцом в Scala
Я пытаюсь сделать примерно следующее: trait MyData trait MyId trait MyDataType[T <: MyData] { type MyIdType <: MyId // There can be converters here to bring back // lost type information. } trait Writer[T <: MyData] { def...
511 просмотров
schedule 15.05.2023

Как явно указать параметризованный тип для экзистенциального типа в Scala?
В Программировании на Scala приведен следующий пример, показывающий, как ссылаться на класс Java с помощью подстановочных знаков. Метод javaSet2ScalaSet принимает тип T. Как правило, всегда можно явно указать параметризованный тип. Но в этом...
498 просмотров

Проверка равенства между двумя разнородными значениями
Я использую расширение -XExistentialQuantification GHC для создания гетерогенного контейнера для значений определенного класса типов ( Shape ): -- Container type data Object = forall a. Shape a => Object a -- 'Shape' class. Methods not...
626 просмотров
schedule 15.06.2023

странный экзистенциальный тип
http://www.iai.uni-bonn.de/~jv/mpc08.pdf - в этой статье я не могу понять следующее объявление: instance TreeLike CTree where ... abs :: CTree a -> Tree a improve :: (forall m. TreeLike m => m a) -> Tree a improve m = abs m...
121 просмотров
schedule 11.12.2023

Как использовать функциональные зависимости и экзистенциальную количественную оценку, чтобы удалить ненужный параметр для моего типа
В библиотеке HLearn, над которой я работаю, у меня есть тип данных контейнера, который выглядит так: data (Model params model) => Container' params model = Container' { baseparams :: params , basemodel :: model } Проблема в...
352 просмотров
schedule 02.12.2022

Ссылка на переменную экзистенциального типа
Я хотел бы добавить сигнатуры типов к некоторым локальным функциям в моем коде. Однако их типы включают анонимные, экзистенциально связанные переменные типа. Поскольку они анонимны, я не знаю, как написать подпись типа. Как я могу ссылаться на...
191 просмотров
schedule 12.04.2022

Получение информации из ограниченных экзистенциальных типов DataKinds
Если у меня есть тип, ограниченный конечным DataKind {-# LANGUAGE DataKinds #-} data K = A | B data Ty (a :: K) = Ty { ... } и экзистенциальный тип, который забывает точный выбор K в типе... но помнит его в переданном словаре. class...
241 просмотров
schedule 30.04.2023

Понимание ограничений типа
Моя конкретная проблема может иметь какое-то отношение к экзистенциальным типам, но я не уверен, поэтому не буду указывать это в заголовке. В любом случае, вот что я пытаюсь сделать. Иметь тип Entity , который охватывает разнородный список...
56 просмотров
schedule 20.06.2022

Укажите тип параметра типа во время выполнения через TypeTag при использовании с экзистенциальным типом в Scala.
У меня есть trait с параметром типа. Чтобы получить тип среды выполнения, я использую TypeTag . Однако, когда этот trait (и его классы) используется с existential type в коллекции, например. List или Map , TypeTag "потеряно". Вот...
2173 просмотров
schedule 02.05.2023

Как правильно квалифицировать типы для работы со случайными монадами
Я хочу создать структуру данных, состоящую из определенных функций на основе: сгиба, логических операций, числовых операций (арифметических и сравнений) и основных строковых операций. Я буду пытаться развивать этот класс функций. Здесь я получаю...
68 просмотров

Ошибка типа при использовании композиции функций с RankNTypes
Меня смущает следующая программа. {-# LANGUAGE RankNTypes #-} newtype A a = A ( forall f. Applicative f => f a ) good :: a -> A a good x = A $ pure $ x bad :: a -> A a bad x = A . pure $ x При попытке скомпилировать я получаю это...
64 просмотров
schedule 22.08.2022

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

Вектор, содержащий GADT
Я просто изучаю все, что могу, об ExistentialQuantification, GADT, KindSignatures и т. д. И для этого я пытаюсь придумать несколько небольших программ, которые помогают мне лучше понять все. Теперь у меня есть этот небольшой фрагмент (который на...
112 просмотров

Экзистенциалы и повторное использование свидетеля
Представим, что у меня есть экзистенциальный тип Т. T = ∃X { a :: X, f :: X -> Int} Из которых я произвожу значение v :: T v = pack {Int, { a = 0, f x = 0 } } as T So : пользователям этого значения запрещено знать,...
66 просмотров
schedule 29.03.2023

Классы типов Scala для преобразования в опции с использованием функций более высокого порядка
У меня есть несколько вариантов, которые, когда их нет, я не хочу запускать свою функцию преобразования. Метод, который в настоящее время обрабатывает параметры, выглядит так: def writeOptionalXml[T](content: Option[T], mapFn: T => Xml): Xml...
554 просмотров

Тип T forSome {тип T}
Я просматриваю блог drmacvier об экзистенциальных типах в Scala. После прочтения я экспериментировал с типами и проверял равенство типов следующим образом, как указано в rnduja блог. def implicitly[A](implicit a: A) = a // To check equality...
152 просмотров
schedule 20.10.2022

Почему компилятор не может вычислить (_ ›: T) =› (_ ‹: V[_ ‹: U]) ‹: T =› V[U] для V[+_]?
Итак, я немного поигрался, пытаясь написать что-нибудь об экзистенциальных явлениях и дисперсии, и наткнулся на этот интересный фрагмент кода. final case class Box[+T](val value: T) { def >>=[U](f: T => Box[U]) = f(value) def...
194 просмотров
schedule 22.11.2022

Почему не работает подтипирование с помощью экзистенциалов и ограничений?
Я пытался понять, как Haskell справляется с подтипами, поэтому придумал следующий фрагмент: {-# LANGUAGE RankNTypes #-} f1 :: () -> Int f1 _ = 5 f2 :: () -> (forall a. Integral a => a) f2 = f1 Строка f2 = f1 завершается с...
190 просмотров

Экзистенциальная квантификация без конструкторов данных
Легко получить экзистенциальную количественную оценку, упаковав словари в конструкторы данных. {-# LANGUAGE GADTs #-} data S where MkS :: Show a => a -> S f :: Int -> S f x = case x of 0 -> MkS 0 _ -> MkS "non-zero"...
66 просмотров
schedule 12.09.2023

Scala: как избежать использования экзистенциального типа
Предположим, у меня есть черта, определенная как trait SomeTrait[A] { def doSomething(): Seq[A] } и несколько классов, которые расширяют эту черту следующим образом. class SomeClass extends SomeTrait[SomeType] { def doSomething():...
68 просмотров
schedule 13.12.2022