Вопросы по теме 'existential-type'
Монада состояния в OCaml
Я пытался реализовать монаду состояния в OCaml (в качестве упражнения). Моя реализация выглядит так:
module type MONAD_BUILDER =
sig
type 'a t
val return : 'a -> 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
end;;
module...
2107 просмотров
schedule
19.03.2024
Есть ли способ определить экзистенциально квантифицированный новый тип в GHC Haskell?
Возможно ли в (GHC) Haskell определить экзистенциально-количественный новый тип? Я понимаю, что если задействованы классы типов, это невозможно сделать в реализации с передачей словаря, но для моих целей классы типов не нужны. Что я действительно...
951 просмотров
schedule
29.06.2023
Действительно общая функция в Haskell
Предположим, у меня есть составной тип данных -
data M o = M (String,o)
Теперь я могу определить функцию, которая работает для ВСЕХ M независимо от o . Например -
f :: M o -> M o
f (M (s,o)) = M (s++"!", o)
Однако f на самом...
351 просмотров
schedule
16.06.2022
Может кто-нибудь объяснить, что здесь происходит? экзистенциальные универсальные квантификации
Я должен запрограммировать (С++) и найти истинное значение следующего. Я не уверен в том, что именно это означает.
AxAy(C(x, y) -> ((Aw(C(x, w) -> w = y) ^ (Az(C(z, y) -> z = x))
обратите внимание, что -> — это импликация, C(x, y) —...
74 просмотров
schedule
24.11.2023
Ограничение типов более высокого типа для аргумента и типа результата Function1
Учитывая некоторые типы более высокого порядка:
trait Impl [S]
trait Event[S, A]
trait Key [A]
Как я могу переписать следующее определение:
def declare[A](fun: Impl[_] => Event[_, A]): Key[A] = ???
чтобы ограничить аргумент fun...
178 просмотров
schedule
27.06.2022
Что такое квантификаторы типов?
Многие статически типизированные языки имеют параметрический полиморфизм. Например, в C# можно определить:
T Foo<T>(T x){ return x; }
На сайте вызова вы можете сделать:
int y = Foo<int>(3);
Эти типы также иногда...
1780 просмотров
schedule
18.04.2022
Какова теоретическая основа экзистенциальных типов?
Haskell Wiki хорошо объясняет, как использовать экзистенциальные типы, но я не совсем разбирайтесь в теории, стоящей за ними.
Рассмотрим этот пример экзистенциального типа:
data S = forall a. Show a => S a -- (1)
чтобы...
4221 просмотров
schedule
14.02.2023
Реализация булевой функции Haskell
Я пытаюсь решить следующую проблему: учитывая, что все селекторы (e^i_n) и некоторые логические функции ( {f_1, f_2, f_n} ) перечисляют все функции n аргументов в закрытии (в [f_1,f_2,..f_n]).
Итак, я реализую BooleanFunctionClass и...
622 просмотров
schedule
27.07.2023
Экзистенциальные типы. Написание экземпляра класса для гетерогенной карты
Используя следующие определения типов и классов, я не понимаю, почему я получаю ошибку при создании instance ниже.
Мне нужно, чтобы MyMap содержал карту разнородных значений.
{-# LANGUAGE ExistentialQuantification #-}
module...
289 просмотров
schedule
11.04.2023
Как выразить экзистенциальные типы, используя полиморфизм типа более высокого ранга (ранг-N)?
Мы привыкли к универсальным количественным типам для полиморфных функций. Экзистенциально-квантованные типы используются значительно реже. Как мы можем выразить экзистенциально квантифицированные типы, используя кванторы универсального типа?
1644 просмотров
schedule
20.12.2022
Экзистенциальные и универсально квантифицированные типы в Haskell
В чем именно разница между ними? Я думаю, что понимаю, как работают экзистенциальные типы, они похожи на наличие базового класса в ООП без возможности приведения вниз. Чем отличаются универсальные типы?
9641 просмотров
schedule
29.08.2023
почему указанная эквивалентность между подстановочными знаками и экзистенциальными типами не наблюдается в REPL
Согласно языку программирования Java 4-го изд. раздел 15.7.1 «Типовые токены»:
getClass получает особую обработку компилятором: если getClass вызывается для ссылки со статическим типом T , то компилятор обрабатывает возвращаемый тип...
859 просмотров
schedule
14.12.2023
Типовое приведение GADT
Допустим, я пишу DSL и хочу иметь поддержку как поддержки фантомных типов, так и плохо типизированных выражений. Мои типы значений могут быть
{-# LANGUAGE GADTs, DataKinds #-}
data Ty = Num | Bool deriving (Typeable)
data Val a where
VNum ::...
287 просмотров
schedule
26.02.2024
Понижение функций до встроенного языка
Как я могу понизить функцию Haskell до встроенного языка максимально безопасным способом. В частности, предположим, что у меня есть тип значения, например
data Type t where
Num :: Type Int
Bool :: Type Bool
data Ty = TNum | TBool deriving...
140 просмотров
schedule
05.03.2023
Экзистенциальные типы в Scala
Немного сбивает с толку экзистенциальные типы.
Это работает для меня:
def valueOf(c: Class[_], name: String) {
type C = Class[T] forSome {type T <: Enum[T]}
Enum.valueOf(c.asInstanceOf[C], name)
}
но это не так:
def valueOf(c:...
539 просмотров
schedule
09.03.2023
Как описать и исправить эту ошибку несоответствия типа Scala?
Ниже приведен конкретный пример ситуации, с которой я иногда сталкиваюсь с параметризованными типами. В принципе, есть параметры типа, которые, как я знаю, совместимы, но я не знаю, как доказать это для некоторых частей кода.
Я пишу маршрутизатор...
2232 просмотров
schedule
15.03.2023
Разрыв с экзистенциальным типом и функцией высшего порядка
Используя некоторую структуру:
object Foo {
trait Bar[B]
}
trait Foo[A, B, F <: Foo[A, B, F]] {
def baz(fun: A => Foo.Bar[B] => Unit): Unit
}
...почему экзистенциальные типы вызывают проблемы:
def test[A, F <: Foo[A, _,...
107 просмотров
schedule
01.07.2023
Как создать подстановочный знак в макросе Scala?
Я не могу понять, как программно создавать экзистенциальные типы в макросах Scala.
Например, предположим, что у меня есть ClassSymbol , представляющий класс C[T] с одним параметром типа.
Теперь, как мне программно создать тип C[_ <:...
211 просмотров
schedule
12.09.2022
Запись в HBase в задании Spark: загадка с экзистенциальными типами
Я пытаюсь написать задание Spark, которое должно поместить свой вывод в HBase. Насколько я могу судить, правильный способ сделать это — использовать метод saveAsHadoopDataset на org.apache.spark.rdd.PairRDDFunctions — для этого требуется, чтобы...
5999 просмотров
schedule
14.11.2022
Haskell: экзистенциальные типы и ввод-вывод
Отправлено на Code Review SE
Пытаясь понять экзистенциальные типы в Haskell, я решил реализовать векторный тип данных фиксированной длины на основе целых чисел. Я использую ghc 7.8.3.
В частности, я хотел написать программу, которая...
125 просмотров
schedule
26.12.2022