3
ответа

Что такое экзистенциальный тип?

Я прочитал статью Wikipedia Экзистенциальные типы. Я заключил, что их называют экзистенциальными типами из-за экзистенциального оператора (∃). Я не уверен, какова точка его, все же. Что...
вопрос задан: 25 January 2015 13:18
2
ответа

Ограничение параметра типа не учитывается при использовании универсального типа с неограниченным подстановочным знаком

В моем проекте у меня есть следующее созвездие: черта F черта X [A & lt ;: F] def test (x: X [_]): X [_ & lt ;: F] = x У черты X есть параметр типа с верхняя граница F. Насколько я понимаю, ...
вопрос задан: 2 March 2019 08:34
2
ответа

Разница между экзистенциальными типами Scala и подстановочным символом Java на примере?

Немного более конкретный вопрос, чем вопрос переполнения стека Что такое экзистенциальный тип? В чем разница между экзистенциальными типами Scala и подстановочным символом Java, желательно с каким-то наглядным примером? ...
вопрос задан: 23 May 2017 10:29
2
ответа

Как каждый объявляет тип контейнера абстрактных данных в Haskell?

Я считал William Cook "На Абстракции Данных, Пересмотренной", и перечитал Ralf Laemmel "Лемма выражения", чтобы попытаться понять, как применить бывшие идеи газеты в Haskell. Так, я пытаюсь...
вопрос задан: 23 April 2011 22:46
2
ответа

Haskell считал тип списка

Так, только для забавы, я играл с типом CountedList в Haskell, с помощью чисел Peano и умных конструкторов. Безопасная с точки зрения типов голова и хвост просто кажутся действительно холодными мне. И я думаю, что достиг...
вопрос задан: 14 January 2010 16:35
1
ответ

Экземпляры Eq или Ord для экзистенциального GADT

Есть ли удобный способ получить экземпляр Ord (или Eq) для сравнения любых двух значений GADT независимо от параметра типа. В GADT параметром типа является фантом, просто предназначенный для ...
вопрос задан: 6 March 2019 20:58
0
ответов

Почему я не могу использовать селекторы записей с экзистенциально квантифицированным типом?

При использовании экзистенциальных типов мы должны использовать синтаксис сопоставления с образцом для извлечения заданного значения. Мы не можем использовать обычные селекторы записей в качестве функций. GHC сообщает об ошибке и предлагает...
вопрос задан: 30 November 2014 06:14
0
ответов

Странное несоответствие типов при использовании доступа к членам вместо экстрактора

Дано кортеж с элементами типа A и другого типа, параметризованного в A: trait Writer[-A] { def write(a: A): Unit } класс case Write[A](значение: A, писатель: Writer[A]) И сайт использования: trait Cache { ...
вопрос задан: 27 September 2013 19:07
0
ответов

Подробное описание экзистенциальной квантификации Haskell

У меня есть общее представление о том, что такое экзистенциальная квантификация по типам и где ее можно использовать. Однако, исходя из моего опыта, есть много предостережений, которые необходимо понять, чтобы использовать ...
вопрос задан: 9 April 2013 18:19
0
ответов

Необходимость обёрток экзистенциальных типов

Оказывается, правильно использовать экзистенциальные/ранговые типы на удивление сложно, несмотря на очень простую идею, стоящую за ними. Почему необходимо оборачивать экзистенциальные типы в типы данных? Я...
вопрос задан: 3 June 2012 13:56
0
ответов

Какова теоретическая основа экзистенциальных типов?

Haskell Wiki хорошо объясняет, как использовать экзистенциальные типы, но я не совсем понимаю лежащую в их основе теорию. Рассмотрим этот пример экзистенциального типа: данные S = forall a. Покажите a =&...
вопрос задан: 25 May 2012 16:54
0
ответов

Гетерогенная карта

Мне нужна карта, которая может содержать произвольные значения, если их типы относятся к одному классу типов. Мой первый наивный подход был примерно таким: type HMap = forall a . MyClass a => M.Map Int a ...
вопрос задан: 24 May 2012 15:30
0
ответов

Что такое квантификаторы типов?

Многие статически типизированные языки обладают параметрическим полиморфизмом. Например, в C#можно определить :T Foo(T x){ return x; } На сайте вызова вы можете сделать :int y = Foo(3); Эти типы...
вопрос задан: 8 April 2012 13:05
0
ответов

Можно ли все использования `forSome` заменить эквивалентным использованием` _`?

Например, List [T] forSome {type T} эквивалентен List [_], но верно ли это для каждого возможное использование forSome или есть случаи, когда forSome нельзя заменить эквивалентом ...
вопрос задан: 25 February 2012 19:17
0
ответов

Что означает предупреждение "not a simple type" в Scala?

Мой проект Scala 2.9.1 сейчас выдает 176 предупреждений, все почти в точности как это: [warn] Not a simple type: [warn] Type: _29.type#source.type forSome { type _29.type <: Ontology.this....
вопрос задан: 3 January 2012 06:33
0
ответов

Экзистенциальные типы и преобразователи монад

Контекст: я пытаюсь создать монаду ошибок, которая также отслеживает список предупреждений , примерно так: data Dangerous a = forall e w. (Error e, Show e, Show w) => Dangerous (ErrorT e (...
вопрос задан: 22 December 2011 18:49
0
ответов

полиморфная функция по экзистенциальному типу

Итак, у меня есть класс: class C a, где reduce :: a -> Int Теперь я хочу упаковать его в тип данных: data Signal = forall a. (C a) => Signal [(Double, a)] Благодаря экзистенциальному ...
вопрос задан: 17 December 2011 05:32
0
ответов

Экзистенциальные типы Haskell

Я пытаюсь обернуть мою мозг вокруг экзистенциальных типов Haskell, и мой первый пример - это разнородный список вещей, которые можно показать: {- # LANGUAGE ExistentialQuantification # -} data Showable = ...
вопрос задан: 28 November 2011 15:47
0
ответов

Ошибки типов с экзистенциальными типами в Haskell

Я борюсь с экзистенциальными типами в своей программе. Мне кажется, что я пытаюсь сделать что-то очень разумное, но я не могу пройти проверку типа :( У меня есть тип данных, который как бы имитирует монаду ...
вопрос задан: 25 November 2011 21:12
0
ответов

Сворачивание полиморфного списка в Haskell

У меня есть коллекция записей, распределенных по множеству типов в большом приложении Haskell, которые ссылаются друг на друга. Все задействованные типы реализуют общий класс типов. Класс типов содержит ...
вопрос задан: 13 October 2011 22:31
0
ответов

«Настоящая» универсальная функция в Haskell

Предположим, у меня есть составной тип данных - data M o = M (String, o) Теперь я может определить функцию, которая работает для ВСЕХ M независимо от o. Например - f :: M o -> M o f (M (s, o)) = M (s ++ "!", o) ...
вопрос задан: 19 August 2011 11:52
0
ответов

Переопределение функций с параметрами типа, зависящими от пути

Редактировать: Благодаря тому, что Дерек указал на критическую часть сообщения об ошибке, я смог извлечь критическую часть еще немного, и кажется быть об экзистенциальных типах. Если я понимаю §3.2.10 ...
вопрос задан: 12 August 2011 19:07
0
ответов

Scala: экзистенциальные типы для карты

Я хочу использовать карту разных типов на неизвестной карте A: val: Map [Foo [A], Бар [A]] = ... ... val foo = новый Foo [Qux] val bar: Bar [Qux] = map (foo) Это не работает, потому что A неизвестно. Я должен ...
вопрос задан: 12 August 2011 10:19
0
ответов

Как использовать Enum.valueOf из Scala?

Мне нужно получить значение перечисления Java из строки, заданной экземпляром класса Enum. Я пробовал код, как показано ниже, но получаю ошибку компиляции "несвязанный подстановочный знак". Кажется, мне нужно что-то сделать с ...
вопрос задан: 19 May 2011 08:58
0
ответов

Есть ли способ определить экзистенциально количественно определенный новый тип в GHC Haskell?

Возможно ли в (GHC) Haskell определить экзистенциально количественно определенный новый тип? Я понимаю, что если задействованы классы типов, это невозможно сделать в реализации с передачей словаря, но для моего ...
вопрос задан: 4 May 2011 22:01
0
ответов

State monad in OCaml

I was trying to implement the state monad in OCaml (as an exercise). My implementation looks like this: module type MONAD_BUILDER = sig type 'at val return:' a -> 'at val bind:' at -> ...
вопрос задан: 30 April 2011 18:24
0
ответов

Haskell: Обновление записи для экзистенциальных типов

Я пытался использовать обновление записи для экзистенциальной записи, когда столкнулся с ошибкой. Быстрый поиск в Google привел меня к запросу функции № 2595, который показывает, что он реализован для GHC еще в версии 6.8.3. Я ...
вопрос задан: 2 January 2011 20:00