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

Как индексировать тип элемента по значению исходного контейнера?
Итак, у меня есть ситуация, очень похожая на этот (намного упрощенный) код: import Data.Maybe import Data.List data Container a = Container [a] -- Assumption: an Element can only obtained from a Container. The operation -- guarentees the...
266 просмотров
schedule 31.08.2022

С чего начать программирование зависимого типа?
Существует учебник Idris, учебник Agda и многие другие документы в стиле учебника и вводные материалы с бесконечными ссылками на вещи, которые еще предстоит изучить. Я как бы ползаю посреди всего этого и большую часть времени застреваю в...
2879 просмотров
schedule 27.09.2022

Кодирование меньше, чем с помощью Haskell
я надеюсь, что некоторые эксперты Haskell могут помочь кое-что прояснить. Можно ли определить Nat обычным способом (через @dorchard Singleton-типы в Haskell ) data S n = Succ n data Z = Zero class Nat n instance Nat Z instance Nat n...
1558 просмотров

Как мне написать этот пример с зависимой типизацией в Haskell?
Предположим, я хочу представить конечные модели языка первого порядка с константой c, символом унарной функции f и предикатом P. Я могу представить носитель как список m , константу как элемент m , функцию как список упорядоченных пар элементов m...
239 просмотров
schedule 24.07.2023

Тип Cong, subst и равенство в языках программирования с зависимой типизацией
В теории зависимо типизированных типов есть тип равенства. Обычно при определении этого типа вводится ряд утилит, а именно cong и subst. Насколько они выразительны? Можно ли выразить все, что можно, с помощью элиминатора на равенство с ними?
242 просмотров
schedule 18.06.2023

Нужно ли мне неоднородное равенство?
Краткая предыстория: я реализую контексты и переименования, используя индексы де Брейна, а затем расширяю эти понятия с помощью «неопределенного» имени, написанного ε. Неопределенное имя индуцирует частичный порядок имен в Γ, а также переименований...
400 просмотров

В чем разница между зависимыми типами и зависимыми типами?
В Scala есть типы, зависящие от пути, но говорят, что Scala не поддерживает зависимую типизацию. В чем разница между зависимыми типами и зависимыми типами? Насколько я понимаю, зависящие от пути типы - это один из видов зависимых типов.
548 просмотров

Можете ли вы создать функции, возвращающие функции зависимой арности на языке с зависимой типизацией?
Исходя из того, что я знаю о зависимых типах, я думаю, что это должно быть возможно, но я никогда раньше не видел такого примера на языке с зависимой типизацией, поэтому я не совсем уверен, с чего начать. Я хочу, чтобы функция формы: f : [Int]...
673 просмотров
schedule 11.01.2023

Метод класса с гетерогенным рекурсивным бесконечным и зависимым аргументом типа
Я застрял, играя с "гетерогенным рекурсивным бесконечным типом" (какое-нибудь название получше?). Пусть следующая рабочая "Глубокая сортировка" class Ord f => DeepSort f where deepSort :: f -> f deepSort = id instance DeepSort...
144 просмотров
schedule 26.09.2022

Внедрение Total Parsers в Idris на основе статьи на Agda
Я пытаюсь реализовать общие парсеры с Idris на основе этой статьи . Сначала я попытался реализовать более простой тип распознавателя P : Tok : Type Tok = Char mutual data P : Bool -> Type where fail : P False empty : P True...
451 просмотров

Agda: имитируйте тактику перезаписи Coq
У меня есть некоторый опыт использования Coq, и сейчас я изучаю Agda. Я работаю над доказательством правильности сортировки вставками и дошел до точки, когда я хотел бы выполнить что-то похожее на тактику перезаписи Coq. В настоящее время у меня...
468 просмотров

Смешивание черты, зависящей от пути
Итак, есть эти различные черты, которые я хочу смешать с базовым классом под названием GPState (состояние генетического программирования). Однако некоторые вещи, которые я хочу смешать, зависят от вещей, о которых я не узнаю, пока не будет создан...
52 просмотров

Зависимые типы в C#: создание зависимости типа вывода от входного значения
Я хочу иметь возможность создать метод на С#, тип вывода которого зависит от значения его аргумента; свободно, delegate B(a) DFunc<A,B>(A a); В качестве примера я хотел бы написать функцию, которая принимает целое число и возвращает...
2117 просмотров
schedule 05.07.2023

Почему Idris не принимает мой пользовательский фолд?
Вот вектор, элементы которого индексируются по длине вектора. data IxVect : (n : Nat) -> (a : Nat -> Type) -> Type where Nil : IxVect 0 a (::) : a n -> IxVect n a -> IxVect (S n) a Я хочу сложить IxVect . total...
301 просмотров
schedule 28.05.2023

Можно ли частично применить n-й параметр в Haskell?
Мне любопытно, можно ли написать функцию apply_nth , которая принимает функцию, номер параметра и значение этого параметра, а затем возвращает новую, частично примененную функцию. У меня такое ощущение, что это невозможно из-за системы типов, но я...
387 просмотров

Индексированные изменяемые массивы размера в Haskell
В Haskell можно писать функции над индексированным по размеру списком, которые гарантируют, что мы никогда не выйдем за границы. Возможная реализация: data Nat = Zero | Succ Nat deriving (Eq, Ord, Show) infixr 5 :- data Vec (n :: Nat) a where...
155 просмотров
schedule 27.01.2023

Ограничения равенства для списков уровня типов
Я пытаюсь наложить ограничение на уровне типа, согласно которому список уровня типа должен иметь ту же длину, что и переносимый Nat уровня типа. Например, при использовании пакета Length from singletons [1]: data (n ~ Length ls) => NumList (n...
364 просмотров

В Идрисе, как добавить 1 к плавнику, пока не будет достигнут максимум
У меня есть тип данных, который принимает число в конструкторе, и это число ДОЛЖНО быть между 1 и 5 (представлено как 0..4): import Data.Fin data Stars = MkStars (Fin 5) Я хочу создать функцию, которая добавляет единицу к существующему star...
272 просмотров
schedule 08.12.2022

Массивы и подъем класса типов (и зависимые типы?)
Предположим, что тип b является экземпляром Monoid , и для фиксированного диапазона индексов (v1,v2) :: (i,i) с i , принадлежащим классу типов Ix , я хочу определить соответствующий тип Data.Array как моноид. Как это может быть сделано? Здесь...
238 просмотров
schedule 14.05.2022

Зависимые типы/параметрический полиморфизм в Common Lisp?
Я хочу написать некоторый общий код, связанный с группами отражения, и поэтому мне нужно настроить некоторые типы, которые отражают математические структуры (векторное пространство, аффинное пространство,...). Поскольку я действительно хочу точно...
1430 просмотров