Вопросы по теме '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 просмотров
schedule
05.11.2022
Проверка равенства между двумя разнородными значениями
Я использую расширение -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 просмотров
schedule
06.11.2022
Ошибка типа при использовании композиции функций с 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 просмотров
schedule
07.11.2022
Вектор, содержащий GADT
Я просто изучаю все, что могу, об ExistentialQuantification, GADT, KindSignatures и т. д. И для этого я пытаюсь придумать несколько небольших программ, которые помогают мне лучше понять все.
Теперь у меня есть этот небольшой фрагмент (который на...
112 просмотров
schedule
28.06.2023
Экзистенциалы и повторное использование свидетеля
Представим, что у меня есть экзистенциальный тип Т.
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 просмотров
schedule
29.10.2022
Тип 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 просмотров
schedule
31.05.2023
Экзистенциальная квантификация без конструкторов данных
Легко получить экзистенциальную количественную оценку, упаковав словари в конструкторы данных.
{-# 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