3
ответа

Какое использование Вы нашли для типов более высокого разряда в Haskell?

Более высокие типы разряда похожи на отличное развлечение. От Haskell wikibook прибывает этот пример: нечто:: (forall a.-> a)-> (Символ, Bool) нечто f = (f 'c', f Верный) Теперь мы можем оценить идентификатор нечто без компилятора...
вопрос задан: 18 April 2011 00:49
0
ответов

Какова цель Rank2Types?

Я не очень хорошо разбираюсь в Haskell, поэтому это может быть очень простой вопрос. Какие языковые ограничения решает Rank2Types? Разве функции в Haskell уже не поддерживают полиморфные аргументы?
вопрос задан: 8 March 2017 22:45
0
ответов

Делать количественную оценку в Идрисе

Я могу делать типы ранга n в Idris 0.9.12 только довольно неуклюже: tupleId: ((a: Type) - > a -> a) - > (а, б) - > (a, b) tupleId f (a, b) = (f _ a, f _ b) Мне нужны подчеркивания везде, где ...
вопрос задан: 5 April 2014 11:43
0
ответов

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

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

Общий вариант bi fab = (fa, fb)

Есть ли какой-нибудь типобезопасный способ написать функцию bi fab = (fa, fb) так, чтобы ее можно было использовать следующим образом: x1 : : (Целое число, Символ) x1 = bi head [2,3] "45" x2 :: (Целое число, Символ) x2 = bi ...
вопрос задан: 27 May 2012 06:34
0
ответов

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

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

newtype с RankNTypes

Если я хочу объявить новый тип таким образом, чтобы тип значения был ограничен наличием экземпляра для класса типов, кажется, что я могу сделать это с помощью: {-# ​​LANGUAGE RankNTypes # -} newtype ShowBox = ...
вопрос задан: 19 March 2012 23:11
0
ответов

Типы с более высоким рейтингом и непредикативные типы

Я хочу реализовать следующую функцию stripPrefixBy: - подпись псевдокода stripPrefixBy :: forall a. [forall b. a -> Может быть b] -> [a] -> Может [a] stripPrefixBy [] xs = Просто xs ...
вопрос задан: 5 January 2012 08:47
0
ответов

Вариант использования полиморфизма ранга 3 (или выше)?

Я видел несколько вариантов использования полиморфизма ранга 2 (наиболее ярким примером является монада ST), но ни одного для более высокого ранга . Кто-нибудь знает о таком варианте использования?
вопрос задан: 6 December 2011 19:06
0
ответов

map runSTArray over a list of STArrays?

У меня есть функция, которая рекурсивно создает сплющенный список матриц из дерева, которые должны быть мутабельными, так как их элементы часто обновляются во время создания. До сих пор я придумал ...
вопрос задан: 28 November 2011 18:01
0
ответов

Документация STArray для новичков и вопросы штата / ST

Мне трудно понять STArray из документации и других статей / обсуждений, которые я нашел через Google. У меня есть еще несколько связанных вопросов ниже. Согласно документации, ...
вопрос задан: 28 November 2011 18:00
0
ответов

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

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

Как именно работают синонимы типов?

Как получается, что следующий тип проверяет {- # LANGUAGE RankNTypes # -} модуль Main, где class Foo a, где type FunFoo = (Foo a) => a -> IO () data Bar = Bar {funFoo :: FunFoo } ...
вопрос задан: 7 May 2011 03:11
0
ответов

RankNTypes для объявлений экземпляров?

Я недавно играл с RankNTypes и задаюсь вопросом, можно ли их использовать в объявлениях экземпляра. Вот простой пример использования данных открытых типов данных (Expr a, Expr b) => Add ab ...
вопрос задан: 23 April 2011 22:13